Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/536#discussion_r82495511 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PlannerSettings.java --- @@ -46,40 +46,83 @@ // max off heap memory for planning (16G) private static final long MAX_OFF_HEAP_ALLOCATION_IN_BYTES = 16l * 1024 * 1024 * 1024; - public static final OptionValidator CONSTANT_FOLDING = new BooleanValidator("planner.enable_constant_folding", true); + public static final OptionValidator CONSTANT_FOLDING = new BooleanValidator("planner.enable_constant_folding", true, + "If one side of a filter condition is a constant expression, constant folding evaluates the expression in the" + + " planning phase and replaces the expression with the constant value. For example, Drill can rewrite" + + " this clause ' WHERE age + 5 < 42 as WHERE age < 37'."); + public static final OptionValidator EXCHANGE = new BooleanValidator("planner.disable_exchanges", false); + public static final OptionValidator HASHAGG = new BooleanValidator("planner.enable_hashagg", true); + public static final OptionValidator STREAMAGG = new BooleanValidator("planner.enable_streamagg", true); - public static final OptionValidator HASHJOIN = new BooleanValidator("planner.enable_hashjoin", true); - public static final OptionValidator MERGEJOIN = new BooleanValidator("planner.enable_mergejoin", true); + + public static final OptionValidator HASHJOIN = new BooleanValidator("planner.enable_hashjoin", true, + "Enable the memory hungry hash join. Drill assumes that a query with have adequate memory to complete and" + + " tries to use the fastest operations possible to complete the planned inner, left, right, or full outer" + + " joins using a hash table. Does not write to disk. Disabling hash join allows Drill to manage arbitrarily" + + " large data in a small memory footprint."); + + public static final OptionValidator MERGEJOIN = new BooleanValidator("planner.enable_mergejoin", true, + "Sort-based operation. A merge join is used for inner join, left and right outer joins. Inputs to the merge" + + " join must be sorted. It reads the sorted input streams from both sides and finds matching rows." + + " Writes to disk."); + public static final OptionValidator NESTEDLOOPJOIN = new BooleanValidator("planner.enable_nestedloopjoin", true); + public static final OptionValidator MULTIPHASE = new BooleanValidator("planner.enable_multiphase_agg", true); - public static final OptionValidator BROADCAST = new BooleanValidator("planner.enable_broadcast_join", true); - public static final OptionValidator BROADCAST_THRESHOLD = new PositiveLongValidator("planner.broadcast_threshold", MAX_BROADCAST_THRESHOLD, 10000000); - public static final OptionValidator BROADCAST_FACTOR = new RangeDoubleValidator("planner.broadcast_factor", 0, Double.MAX_VALUE, 1.0d); - public static final OptionValidator NESTEDLOOPJOIN_FACTOR = new RangeDoubleValidator("planner.nestedloopjoin_factor", 0, Double.MAX_VALUE, 100.0d); - public static final OptionValidator NLJOIN_FOR_SCALAR = new BooleanValidator("planner.enable_nljoin_for_scalar_only", true); - public static final OptionValidator JOIN_ROW_COUNT_ESTIMATE_FACTOR = new RangeDoubleValidator("planner.join.row_count_estimate_factor", 0, Double.MAX_VALUE, 1.0d); + + public static final OptionValidator BROADCAST = new BooleanValidator("planner.enable_broadcast_join", true, + "The broadcast join can be used for hash join, merge join and nested loop join. Use to join a large (fact)" + + " table to relatively smaller (dimension) tables. This should be enabled."); + public static final OptionValidator BROADCAST_THRESHOLD = new PositiveLongValidator("planner.broadcast_threshold", + MAX_BROADCAST_THRESHOLD, 10000000, "The maximum number of records allowed to be broadcast as part of a query." + + " If the threshold is exceeded, Drill reshuffles data rather than doing a broadcast to one side of the" + + " join. Range: 0 - " + MAX_BROADCAST_THRESHOLD + "."); + public static final OptionValidator BROADCAST_FACTOR = new RangeDoubleValidator("planner.broadcast_factor", 0, + Double.MAX_VALUE, 1.0d, "A heuristic parameter for influencing the broadcast of records as part of a query."); --- End diff -- Increasing the value does... what?
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---