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.
---