| # 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 tests.common.impala_test_suite import ImpalaTestSuite |
| from tests.common.skip import SkipIfCatalogV2 |
| |
| # This test requires that testdata/avro_schema_resolution/create_table.sql has been run |
| class TestAvroSchemaResolution(ImpalaTestSuite): |
| @classmethod |
| def get_workload(self): |
| return 'functional-query' |
| |
| @classmethod |
| def add_test_dimensions(cls): |
| super(TestAvroSchemaResolution, cls).add_test_dimensions() |
| # avro/snap is the only table format with a schema_resolution_test table |
| cls.ImpalaTestMatrix.add_constraint(lambda v:\ |
| v.get_value('table_format').file_format == 'avro' and\ |
| v.get_value('table_format').compression_codec == 'snap') |
| |
| def test_avro_schema_resolution(self, vector, unique_database): |
| self.run_test_case('QueryTest/avro-schema-resolution', vector, unique_database) |
| |
| def test_avro_c_lib_unicode_nulls(self, vector): |
| """Test for IMPALA-1136 and IMPALA-2161 and unicode characters in the |
| schema that were not handled correctly by the Avro C library. |
| """ |
| result = self.execute_query("select * from functional_avro_snap.avro_unicode_nulls") |
| comparison = self.execute_query("select * from functional.liketbl") |
| |
| # If we were not able to properly parse the Avro file schemas, then the result |
| # would be empty. |
| assert len(comparison.data) == len(result.data) |
| for x in range(len(result.data)): |
| assert comparison.data[x] == result.data[x] |
| |
| @SkipIfCatalogV2.catalog_v1_test() |
| def test_avro_schema_changes(self, vector, unique_database): |
| """Test for IMPALA-3314 and IMPALA-3513: Impalad shouldn't crash with stale Avro |
| metadata. Instead, should provide a meaningful error message. |
| Test for IMPALA-3092: Impala should be able to query an Avro table after ALTER TABLE |
| ... ADD COLUMN ... |
| Test for IMPALA-3776: Fix describe formatted when changing Avro schema. |
| """ |
| self.run_test_case('QueryTest/avro-schema-changes', vector, unique_database) |