Alexander Behm created IMPALA-5847:
--------------------------------------
Summary: Some query options do not work as expected in .test files
Key: IMPALA-5847
URL: https://issues.apache.org/jira/browse/IMPALA-5847
Project: IMPALA
Issue Type: Bug
Components: Infrastructure
Reporter: Alexander Behm
Priority: Critical
We often use "set" in .test files to alter query options. Theoretically, a
"set" command should change the session-level query options and in most cases a
single .test file is executed from the same Impala session. However, for some
options using "set" within a query section does not seem to work. For example,
"num_nodes" does not work as expected as shown below.
PyTest:
{code}
import pytest
from tests.common.impala_test_suite import ImpalaTestSuite
class TestStringQueries(ImpalaTestSuite):
@classmethod
def get_workload(cls):
return 'functional-query'
def test_set_bug(self, vector):
self.run_test_case('QueryTest/set_bug', vector)
{code}
Corresponding .test file:
{code}
====
---- QUERY
set num_nodes=1;
select count(*) from functional.alltypes;
select count(*) from functional.alltypes;
select count(*) from functional.alltypes;
---- RESULTS
7300
---- TYPES
BIGINT
====
{code}
After running the test above, I validated that the 3 queries were run from the
same session, and that the queries run a distributed plan. The "num_nodes"
option was definitely not picked up. I am not sure which query options are
affected. In several .test files setting other query options does seem to work
as expected.
I suspect that the test framework might keep its own list of default query
options which get submitted together with the query, so the session-level
options are overridden on a per-request basis. For example, if I change the
pytest to remove the "num_nodes" dictionary entry, then the test works as
expected.
PyTest workaround:
{code}
import pytest
from tests.common.impala_test_suite import ImpalaTestSuite
class TestStringQueries(ImpalaTestSuite):
@classmethod
def get_workload(cls):
return 'functional-query'
def test_set_bug(self, vector):
# Workaround SET bug
vector.get_value('exec_option').pop('num_nodes', None)
self.run_test_case('QueryTest/set_bug', vector)
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)