mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
Before this patch, ImpylaHS2Connection unconditionally opened a cursor (and HS2 session) as it connected, followed by running a "SET ALL" query to populate the default query options. This patch changes the behavior of ImpylaHS2Connection to open the default cursor only when querying is needed for the first time. This helps preserve assertions for a test that is sensitive about client connection, like IMPALA-13925. Default query options are now parsed from newly instantiated TQueryOptions object rather than issuing a "SET ALL" query or making BeeswaxService.get_default_configuration() RPC. Fix test_query_profile_contains_query_compilation_metadata_cached_event slightly by setting the 'sync_ddl' option because the test is flaky without it. Tweak test_max_hs2_sessions_per_user to run queries so that sessions will open. Deduplicate test cases between utc-timestamp-functions.test and local-timestamp-functions.test. Rename TestUtcTimestampFunctions to TestTimestampFunctions, and expand it to also tests local-timestamp-functions.test and file-formats-with-local-tz-conversion.test. The table_format is now contrained to 'test/none' because it is unnecessary to permute other table_format. Deprecate 'use_local_tz_for_unix_timestamp_conversions' in favor of query option with the same name. Filed IMPALA-13953 to update the documentation of 'use_local_tz_for_unix_timestamp_conversions' flag/option. Testing: Run and pass a few pytests such as: test_admission_controller.py test_observability.py test_runtime_filters.py test_session_expiration.py. test_set.py Change-Id: I9d5e3e5c11ad386b7202431201d1a4cff46cbff5 Reviewed-on: http://gerrit.cloudera.org:8080/22731 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
69 lines
3.2 KiB
Python
69 lines
3.2 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
import pytest
|
|
from tests.common.custom_cluster_test_suite import CustomClusterTestSuite
|
|
from tests.common.skip import SkipIfFS
|
|
from tests.common.test_dimensions import (
|
|
add_exec_option_dimension,
|
|
create_exec_option_dimension,
|
|
)
|
|
|
|
|
|
class TestLocalTzConversion(CustomClusterTestSuite):
|
|
"""Tests for --use_local_tz_for_unix_timestamp_conversions"""
|
|
|
|
@classmethod
|
|
def add_test_dimensions(cls):
|
|
super(TestLocalTzConversion, cls).add_test_dimensions()
|
|
cls.ImpalaTestMatrix.add_dimension(create_exec_option_dimension(
|
|
cluster_sizes=[0], disable_codegen_options=[False, True], batch_sizes=[0]))
|
|
# Test with and without expr rewrites to cover regular expr evaluations
|
|
# as well as constant folding, in particular, timestamp literals.
|
|
add_exec_option_dimension(cls, 'enable_expr_rewrites', [0, 1])
|
|
|
|
@classmethod
|
|
def add_custom_cluster_constraints(cls):
|
|
# Do not call the super() implementation because this class needs to relax the
|
|
# set of constraints.
|
|
cls.ImpalaTestMatrix.add_constraint(lambda v:
|
|
v.get_value('table_format').file_format == 'text'
|
|
and v.get_value('table_format').compression_codec == 'none')
|
|
|
|
@SkipIfFS.hbase
|
|
@pytest.mark.execute_serially
|
|
@CustomClusterTestSuite.with_args("--use_local_tz_for_unix_timestamp_conversions=true")
|
|
def test_timestamp_functions(self, vector):
|
|
"""Tests timestamp functions with --use_local_tz_for_unix_timestamp_conversions=true
|
|
TODO: this test can be probably removed as a query option is created for
|
|
use_local_tz_for_unix_timestamp_conversions in IMPALA-10171
|
|
"""
|
|
# Tests for UTC timestamp functions, i.e. functions that do not depend on the
|
|
# behavior of the flag --use_local_tz_for_unix_timestamp_conversions. These tests
|
|
# are also executed in test_exprs.py to ensure the same behavior when running
|
|
# without the gflag set.
|
|
self.run_test_case('QueryTest/utc-timestamp-functions', vector)
|
|
|
|
# Tests for local timestamp functions, i.e. functions that depend on the
|
|
# behavior of the flag --use_local_tz_for_unix_timestamp_conversions.
|
|
self.run_test_case('QueryTest/local-timestamp-functions', vector)
|
|
|
|
# Test that scanning of different file formats is not affected by flag
|
|
# use_local_tz_for_unix_timestamp_conversions.
|
|
self.run_test_case('QueryTest/file-formats-with-local-tz-conversion', vector)
|