IMPALA-5286: Tests that an external Kudu table that was created with a column name containing upper case letters is handled correctly.
(self, vector, kudu_client, unique_database)
| 944 | @SkipIfKudu.no_hybrid_clock() |
| 945 | @SkipIfKudu.hms_integration_enabled() |
| 946 | def test_column_name_case(self, vector, kudu_client, unique_database): |
| 947 | """IMPALA-5286: Tests that an external Kudu table that was created with a column name |
| 948 | containing upper case letters is handled correctly.""" |
| 949 | vector.set_exec_option('kudu_read_mode', 'READ_AT_SNAPSHOT') |
| 950 | tbl = 'kudu_external_test' |
| 951 | table_name = '%s.%s' % (unique_database, tbl) |
| 952 | if kudu_client.table_exists(table_name): |
| 953 | kudu_client.delete_table(table_name) |
| 954 | |
| 955 | schema_builder = SchemaBuilder() |
| 956 | key_col = 'Key' |
| 957 | schema_builder.add_column(key_col, INT64).nullable(False).primary_key() |
| 958 | schema = schema_builder.build() |
| 959 | partitioning = Partitioning().set_range_partition_columns([key_col])\ |
| 960 | .add_range_partition([1], [10]) |
| 961 | |
| 962 | try: |
| 963 | kudu_client.create_table(table_name, schema, partitioning) |
| 964 | |
| 965 | self.execute_query_using_vector( |
| 966 | create_external_kudu_query(unique_database, tbl, table_name), vector) |
| 967 | |
| 968 | # Perform a variety of operations on the table. |
| 969 | self.execute_query_using_vector( |
| 970 | "insert into %s (kEy) values (5), (1), (4)" % table_name, vector) |
| 971 | result = self.execute_query_using_vector( |
| 972 | "select keY from %s where KeY %% 2 = 0" % table_name, vector) |
| 973 | assert result.data == ['4'] |
| 974 | result = self.execute_query_using_vector( |
| 975 | "select * from %s order by kEY" % table_name, vector) |
| 976 | assert result.data == ['1', '4', '5'] |
| 977 | |
| 978 | # Do a join with a runtime filter targeting the column. |
| 979 | result = self.execute_query_using_vector( |
| 980 | "select count(*) from %s a, %s b where a.key = b.key" % (table_name, table_name), |
| 981 | vector) |
| 982 | assert result.data == ['3'] |
| 983 | |
| 984 | self.execute_query_using_vector( |
| 985 | "alter table %s add range partition 11 < values < 20" % table_name, vector) |
| 986 | |
| 987 | new_key = "KEY2" |
| 988 | self.execute_query_using_vector( |
| 989 | "alter table %s change KEy %s bigint" % (table_name, new_key), |
| 990 | vector) |
| 991 | val_col = "vaL" |
| 992 | self.execute_query_using_vector( |
| 993 | "alter table %s add columns (%s bigint)" % (table_name, val_col), vector) |
| 994 | |
| 995 | result = self.execute_query_using_vector("describe %s" % table_name, vector) |
| 996 | # 'describe' should print the column name in lower case. |
| 997 | assert new_key.lower() in result.data[0] |
| 998 | assert val_col.lower() in result.data[1] |
| 999 | |
| 1000 | self.execute_query_using_vector( |
| 1001 | "alter table %s drop column Val" % table_name, vector) |
| 1002 | result = self.execute_query_using_vector("describe %s" % table_name, vector) |
| 1003 | assert len(result.data) == 1 |
nothing calls this directly
no test coverage detected