You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Alexander Behm (JIRA)" <ji...@apache.org> on 2017/08/24 22:50:00 UTC

[jira] [Created] (IMPALA-5847) Some query options do not work as expected in .test files

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)