[ https://issues.apache.org/jira/browse/DRILL-4699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15557174#comment-15557174 ]
ASF GitHub Bot commented on DRILL-4699: --------------------------------------- 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? > Add Description Column in sys.options > ------------------------------------- > > Key: DRILL-4699 > URL: https://issues.apache.org/jira/browse/DRILL-4699 > Project: Apache Drill > Issue Type: Improvement > Components: Server, Documentation > Affects Versions: 1.6.0 > Reporter: John Omernik > Assignee: Paul Rogers > > select * from sys.options provides a user with a strong understanding of what > options are available to Drill. These options are not well documented. Some > options are "experimental" other options have a function only in specific > cases (writers vs readers for example). If we had a large text field for > description, we could enforce documentation of the settings are option > creation time, and the description of the setting could change as the > versions change (i.e. when an option graduates to being supported from being > experimental, it would be changed in the version the user is using. I.e. when > they run select * from sys.options, they know the exact state of the option > every time they query. It could also facilitate better self documentation via > QA on pull requests "Did you update the sys.options.desc?" This makes it > easier for users, and admins in the use of Drill in an enterprise. > The first step is adding the field, and then going back and filling in the > desc for each option. (Another JIRA after the option is available) -- This message was sent by Atlassian JIRA (v6.3.4#6332)