Github user paul-rogers commented on the issue: https://github.com/apache/drill/pull/868 From a note sent by @dvjyothsna: All the system/session option default values are externalized to the conf file. Now the options are looked up in the hierarchical order of SESSION - SYSTEM - CONFIG, the session being given the highest precedence. So, if the user doesn't set system/session option by issuing alter system/session, option manager fetches the value from the config. Now we need not bother about getting the value from config separately if it is not in the system/session level. For example: ``` OptionValue value = sessionOptions.getOption(JAVA_COMPILER_OPTION); policy = CompilerPolicy.valueOf((value != null) ? value.string_val.toUpperCase() : config.getString(JAVA_COMPILER_CONFIG) ``` In the above code snippet we try to get option value and if it is not set (if it is null) we try to get it from Config. With my code changes if the value is not set at system/session level, value from the config is picked automatically.For example, the above can be simplified to: ``` policy = CompilerPolicy.valueOf(sessionOptions.getOption(JAVA_COMPILER_OPTION)); ``` I have already externalized all the existing options in ExecConstants, PlannerSettings, etc., to the drill-module.conf. Following are the steps to add a new system/session option. Steps to add a new system/session option: 1. Add a validator in the ExecConstants.java or PlannerSettings.java or whichever is appropriate for the option. For example: ``` String NEW_OPTION_KEY = "drill.exec.new_option"; OptionValidator NEW_OPTION= new DoubleValidator(NEW_OPTION_KEY); ``` 2. Add the validator from the above step to the validators list in `SystemOptionManager.java`. 3. Add the option in the conf file (for example, `drill-module.conf` or `drill-override.conf` file ) under the name space `drill.exec.options`. For example: ``` drill.exec.options : { drill : { exec : { new_option : 1.5 } } } ``` 4. Set the default value for the option in the conf file as shown above. 5. OptionManager loads default values from the conf file, User can override the default values by issuing `ALTER SYSTEM/SESSION`.
--- 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. ---