Github user ilooner commented on a diff in the pull request:

    https://github.com/apache/drill/pull/923#discussion_r138132892
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/exec/server/TestOptions.java ---
    @@ -56,7 +56,7 @@ public void checkChangedColumn() throws Exception {
         test("ALTER session SET `%s` = %d;", SLICE_TARGET,
           ExecConstants.SLICE_TARGET_DEFAULT);
         testBuilder()
    -        .sqlQuery("SELECT status FROM sys.options WHERE name = '%s' AND 
type = 'SESSION'", SLICE_TARGET)
    +        .sqlQuery("SELECT status FROM sys.options WHERE name = '%s' AND 
optionScope = 'SESSION'", SLICE_TARGET)
    --- End diff --
    
    Yeah we are in a tough spot because **type** was not well defined 
previously, so the tests implicitly assumed **type** represented where an 
option was set. Now that we have settled on a definition for **type**, which is 
the set of scopes where an option can be set, we have deviated from the meaning 
**type** was given in the tests. One possible way out of this situation is to 
change the definition of **type** and **optionScope** again by swapping their 
meanings:
    
    * **type**: Would become where an option was set.
    * **optionScope**: Would become the set of scopes where an option could be 
set.
    
    This would minimize the changes required to the unit tests. It's hard to 
say how it would impact other user's scripts though because **type** was 
treated inconsistently in the code base, so I'm not sure how someone could have 
used the **type** information productively except to write unit tests, which 
verified incorrect behavior.
    
    Long story short, I'll swap the definitions of **type** and 
**optionScope**. I think that would minimize the impact on unit tests and 
users, but we cannot provide any guarantees for users who depended on type when 
it was inconsistently defined.



---

Reply via email to