blob: dfe318c9be5d9d10cf697d3f7af1b2221a677663 [file] [log] [blame]
/*
* 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.
*/
package org.apache.spark.sql.hive.execution
import java.io.File
import java.util.{Locale, TimeZone}
import org.scalatest.BeforeAndAfter
import org.apache.spark.sql.catalyst.rules.RuleExecutor
import org.apache.spark.sql.hive.HiveUtils
import org.apache.spark.sql.hive.test.TestHive
import org.apache.spark.sql.internal.SQLConf
import org.apache.spark.tags.SlowHiveTest
/**
* Runs the test cases that are included in the hive distribution.
*/
@SlowHiveTest
class HiveCompatibilitySuite extends HiveQueryFileTest with BeforeAndAfter {
// TODO: bundle in jar files... get from classpath
private lazy val hiveQueryDir = TestHive.getHiveFile(
"ql/src/test/queries/clientpositive".split("/").mkString(File.separator))
private val originalTimeZone = TimeZone.getDefault
private val originalLocale = Locale.getDefault
private val originalColumnBatchSize = TestHive.conf.columnBatchSize
private val originalInMemoryPartitionPruning = TestHive.conf.inMemoryPartitionPruning
private val originalCrossJoinEnabled = TestHive.conf.crossJoinEnabled
private val originalSessionLocalTimeZone = TestHive.conf.sessionLocalTimeZone
def testCases: Seq[(String, File)] = {
hiveQueryDir.listFiles.map(f => f.getName.stripSuffix(".q") -> f)
}
override def beforeAll() {
super.beforeAll()
TestHive.setCacheTables(true)
// Timezone is fixed to America/Los_Angeles for those timezone sensitive tests (timestamp_*)
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"))
// Add Locale setting
Locale.setDefault(Locale.US)
// Set a relatively small column batch size for testing purposes
TestHive.setConf(SQLConf.COLUMN_BATCH_SIZE, 5)
// Enable in-memory partition pruning for testing purposes
TestHive.setConf(SQLConf.IN_MEMORY_PARTITION_PRUNING, true)
// Ensures that cross joins are enabled so that we can test them
TestHive.setConf(SQLConf.CROSS_JOINS_ENABLED, true)
// Fix session local timezone to America/Los_Angeles for those timezone sensitive tests
// (timestamp_*)
TestHive.setConf(SQLConf.SESSION_LOCAL_TIMEZONE, "America/Los_Angeles")
RuleExecutor.resetMetrics()
}
override def afterAll() {
try {
TestHive.setCacheTables(false)
TimeZone.setDefault(originalTimeZone)
Locale.setDefault(originalLocale)
TestHive.setConf(SQLConf.COLUMN_BATCH_SIZE, originalColumnBatchSize)
TestHive.setConf(SQLConf.IN_MEMORY_PARTITION_PRUNING, originalInMemoryPartitionPruning)
TestHive.setConf(SQLConf.CROSS_JOINS_ENABLED, originalCrossJoinEnabled)
TestHive.setConf(SQLConf.SESSION_LOCAL_TIMEZONE, originalSessionLocalTimeZone)
// For debugging dump some statistics about how much time was spent in various optimizer rules
logWarning(RuleExecutor.dumpTimeSpent())
} finally {
super.afterAll()
}
}
/** A list of tests deemed out of scope currently and thus completely disregarded. */
override def blackList: Seq[String] = Seq(
// These tests use hooks that are not on the classpath and thus break all subsequent execution.
"hook_order",
"hook_context_cs",
"mapjoin_hook",
"multi_sahooks",
"overridden_confs",
"query_properties",
"sample10",
"updateAccessTime",
"index_compact_binary_search",
"bucket_num_reducers",
"column_access_stats",
"concatenate_inherit_table_location",
"describe_pretty",
"describe_syntax",
"orc_ends_with_nulls",
// Setting a default property does not seem to get reset and thus changes the answer for many
// subsequent tests.
"create_default_prop",
// User/machine specific test answers, breaks the caching mechanism.
"authorization_3",
"authorization_5",
"keyword_1",
"misc_json",
"load_overwrite",
"alter_table_serde2",
"alter_table_not_sorted",
"alter_skewed_table",
"alter_partition_clusterby_sortby",
"alter_merge",
"alter_concatenate_indexed_table",
"protectmode2",
// "describe_table",
"describe_comment_nonascii",
"create_merge_compressed",
"create_view",
"create_view_partitioned",
"database_location",
"database_properties",
// DFS commands
"symlink_text_input_format",
// Weird DDL differences result in failures on jenkins.
"create_like2",
"partitions_json",
// This test is totally fine except that it includes wrong queries and expects errors, but error
// message format in Hive and Spark SQL differ. Should workaround this later.
"udf_to_unix_timestamp",
// we can cast dates likes '2015-03-18' to a timestamp and extract the seconds.
// Hive returns null for second('2015-03-18')
"udf_second",
// we can cast dates likes '2015-03-18' to a timestamp and extract the minutes.
// Hive returns null for minute('2015-03-18')
"udf_minute",
// Cant run without local map/reduce.
"index_auto_update",
"index_auto_self_join",
"index_stale.*",
"index_compression",
"index_bitmap_compression",
"index_auto_multiple",
"index_auto_mult_tables_compact",
"index_auto_mult_tables",
"index_auto_file_format",
"index_auth",
"index_auto_empty",
"index_auto_partitioned",
"index_auto_unused",
"index_bitmap_auto_partitioned",
"ql_rewrite_gbtoidx",
"stats1.*",
"stats20",
"alter_merge_stats",
"columnstats.*",
"annotate_stats.*",
"database_drop",
"index_serde",
// Hive seems to think 1.0 > NaN = true && 1.0 < NaN = false... which is wrong.
// http://stackoverflow.com/a/1573715
"ops_comparison",
// Tests that seems to never complete on hive...
"skewjoin",
"database",
// These tests fail and exit the JVM.
"auto_join18_multi_distinct",
"join18_multi_distinct",
"input44",
"input42",
"input_dfs",
"metadata_export_drop",
"repair",
// Uses a serde that isn't on the classpath... breaks other tests.
"bucketizedhiveinputformat",
// Avro tests seem to change the output format permanently thus breaking the answer cache, until
// we figure out why this is the case let just ignore all of avro related tests.
".*avro.*",
// Unique joins are weird and will require a lot of hacks (see comments in hive parser).
"uniquejoin",
// Hive seems to get the wrong answer on some outer joins. MySQL agrees with catalyst.
"auto_join29",
// No support for multi-alias i.e. udf as (e1, e2, e3).
"allcolref_in_udf",
// No support for TestSerDe (not published afaik)
"alter1",
"input16",
// No support for unpublished test udfs.
"autogen_colalias",
// Hive does not support buckets.
".*bucket.*",
// We have our own tests based on these query files.
".*window.*",
// Fails in hive with authorization errors.
"alter_rename_partition_authorization",
"authorization.*",
// Hadoop version specific tests
"archive_corrupt",
// No support for case sensitivity is resolution using hive properties atm.
"case_sensitivity",
// Flaky test, Hive sometimes returns different set of 10 rows.
"lateral_view_outer",
// After stop taking the `stringOrError` route, exceptions are thrown from these cases.
// See SPARK-2129 for details.
"join_view",
"mergejoins_mixed",
// Returning the result of a describe state as a JSON object is not supported.
"describe_table_json",
"describe_database_json",
"describe_formatted_view_partitioned_json",
// Hive returns the results of describe as plain text. Comments with multiple lines
// introduce extra lines in the Hive results, which make the result comparison fail.
"describe_comment_indent",
// Limit clause without a ordering, which causes failure.
"orc_predicate_pushdown",
// Requires precision decimal support:
"udf_when",
"udf_case",
// the table src(key INT, value STRING) is not the same as HIVE unittest. In Hive
// is src(key STRING, value STRING), and in the reflect.q, it failed in
// Integer.valueOf, which expect the first argument passed as STRING type not INT.
"udf_reflect",
// Sort with Limit clause causes failure.
"ctas",
"ctas_hadoop20",
// timestamp in array, the output format of Hive contains double quotes, while
// Spark SQL doesn't
"udf_sort_array",
// It has a bug and it has been fixed by
// https://issues.apache.org/jira/browse/HIVE-7673 (in Hive 0.14 and trunk).
"input46",
// These tests were broken by the hive client isolation PR.
"part_inherit_tbl_props",
"part_inherit_tbl_props_with_star",
"nullformatCTAS", // SPARK-7411: need to finish CTAS parser
// The isolated classloader seemed to make some of our test reset mechanisms less robust.
"combine1", // This test changes compression settings in a way that breaks all subsequent tests.
"load_dyn_part14.*", // These work alone but fail when run with other tests...
// the answer is sensitive for jdk version
"udf_java_method",
// Spark SQL use Long for TimestampType, lose the precision under 1us
"timestamp_1",
"timestamp_2",
"timestamp_udf",
// Hive returns string from UTC formatted timestamp, spark returns timestamp type
"date_udf",
// Can't compare the result that have newline in it
"udf_get_json_object",
// Unlike Hive, we do support log base in (0, 1.0], therefore disable this
"udf7",
// Trivial changes to DDL output
"compute_stats_empty_table",
"compute_stats_long",
"create_view_translate",
"show_tblproperties",
// Odd changes to output
"merge4",
// Unsupported underscore syntax.
"inputddl5",
// Thift is broken...
"inputddl8",
// Hive changed ordering of ddl:
"varchar_union1",
// Parser changes in Hive 1.2
"input25",
"input26",
// Uses invalid table name
"innerjoin",
// classpath problems
"compute_stats.*",
"udf_bitmap_.*",
// The difference between the double numbers generated by Hive and Spark
// can be ignored (e.g., 0.6633880657639323 and 0.6633880657639322)
"udaf_corr",
// Feature removed in HIVE-11145
"alter_partition_protect_mode",
"drop_partitions_ignore_protection",
"protectmode",
// Hive returns null rather than NaN when n = 1
"udaf_covar_samp",
// The implementation of GROUPING__ID in Hive is wrong (not match with doc).
"groupby_grouping_id1",
"groupby_grouping_id2",
"groupby_grouping_sets1",
// Spark parser treats numerical literals differently: it creates decimals instead of doubles.
"udf_abs",
"udf_format_number",
"udf_round",
"udf_round_3",
"view_cast",
// These tests check the VIEW table definition, but Spark handles CREATE VIEW itself and
// generates different View Expanded Text.
"alter_view_as_select",
// We don't support show create table commands in general
"show_create_table_alter",
"show_create_table_db_table",
"show_create_table_delimited",
"show_create_table_does_not_exist",
"show_create_table_index",
"show_create_table_partitioned",
"show_create_table_serde",
"show_create_table_view",
// These tests try to change how a table is bucketed, which we don't support
"alter4",
"sort_merge_join_desc_5",
"sort_merge_join_desc_6",
"sort_merge_join_desc_7",
// These tests try to create a table with bucketed columns, which we don't support
"auto_join32",
"auto_join_filters",
"auto_smb_mapjoin_14",
"ct_case_insensitive",
"explain_rearrange",
"groupby_sort_10",
"groupby_sort_2",
"groupby_sort_3",
"groupby_sort_4",
"groupby_sort_5",
"groupby_sort_7",
"groupby_sort_8",
"groupby_sort_9",
"groupby_sort_test_1",
"inputddl4",
"join_filters",
"join_nulls",
"join_nullsafe",
"load_dyn_part2",
"orc_empty_files",
"reduce_deduplicate",
"smb_mapjoin9",
"smb_mapjoin_1",
"smb_mapjoin_10",
"smb_mapjoin_13",
"smb_mapjoin_14",
"smb_mapjoin_15",
"smb_mapjoin_16",
"smb_mapjoin_17",
"smb_mapjoin_2",
"smb_mapjoin_21",
"smb_mapjoin_25",
"smb_mapjoin_3",
"smb_mapjoin_4",
"smb_mapjoin_5",
"smb_mapjoin_6",
"smb_mapjoin_7",
"smb_mapjoin_8",
"sort_merge_join_desc_1",
"sort_merge_join_desc_2",
"sort_merge_join_desc_3",
"sort_merge_join_desc_4",
// These tests try to create a table with skewed columns, which we don't support
"create_skewed_table1",
"skewjoinopt13",
"skewjoinopt18",
"skewjoinopt9",
// This test tries to create a table like with TBLPROPERTIES clause, which we don't support.
"create_like_tbl_props",
// Index commands are not supported
"drop_index",
"drop_index_removes_partition_dirs",
"alter_index",
"auto_sortmerge_join_1",
"auto_sortmerge_join_10",
"auto_sortmerge_join_11",
"auto_sortmerge_join_12",
"auto_sortmerge_join_13",
"auto_sortmerge_join_14",
"auto_sortmerge_join_15",
"auto_sortmerge_join_16",
"auto_sortmerge_join_2",
"auto_sortmerge_join_3",
"auto_sortmerge_join_4",
"auto_sortmerge_join_5",
"auto_sortmerge_join_6",
"auto_sortmerge_join_7",
"auto_sortmerge_join_8",
"auto_sortmerge_join_9",
// Macro commands are not supported
"macro",
// Create partitioned view is not supported
"create_like_view",
"describe_formatted_view_partitioned",
// This uses CONCATENATE, which we don't support
"alter_merge_2",
// TOUCH is not supported
"touch",
// INPUTDRIVER and OUTPUTDRIVER are not supported
"inoutdriver",
// We do not support ALTER TABLE ADD COLUMN, ALTER TABLE REPLACE COLUMN,
// ALTER TABLE CHANGE COLUMN, and ALTER TABLE SET FILEFORMAT.
// We have converted the useful parts of these tests to tests
// in org.apache.spark.sql.hive.execution.SQLQuerySuite.
"alter_partition_format_loc",
"alter_varchar1",
"alter_varchar2",
"date_3",
"diff_part_input_formats",
"disallow_incompatible_type_change_off",
"fileformat_mix",
"input3",
"partition_schema1",
"partition_wise_fileformat4",
"partition_wise_fileformat5",
"partition_wise_fileformat6",
"partition_wise_fileformat7",
"rename_column",
// The following fails due to describe extended.
"alter3",
"alter5",
"alter_table_serde",
"input_part10",
"input_part10_win",
"inputddl6",
"inputddl7",
"part_inherit_tbl_props_empty",
"serde_reported_schema",
"stats0",
"stats_empty_partition",
"unicode_notation",
"union_remove_11",
"union_remove_3",
// The following fails due to alter table partitions with predicate.
"drop_partitions_filter",
"drop_partitions_filter2",
"drop_partitions_filter3",
// The following failes due to truncate table
"truncate_table",
// We do not support DFS command.
// We have converted the useful parts of these tests to tests
// in org.apache.spark.sql.hive.execution.SQLQuerySuite.
"drop_database_removes_partition_dirs",
"drop_table_removes_partition_dirs",
// These tests use EXPLAIN FORMATTED, which is not supported
"input4",
"join0",
"plan_json",
// This test uses CREATE EXTERNAL TABLE without specifying LOCATION
"alter2",
// [SPARK-16248][SQL] Whitelist the list of Hive fallback functions
"udf_field",
"udf_reflect2",
"udf_xpath",
"udf_xpath_boolean",
"udf_xpath_double",
"udf_xpath_float",
"udf_xpath_int",
"udf_xpath_long",
"udf_xpath_short",
"udf_xpath_string",
// These tests DROP TABLE that don't exist (but do not specify IF EXISTS)
"alter_rename_partition1",
"date_1",
"date_4",
"date_join1",
"date_serde",
"insert_compressed",
"lateral_view_cp",
"leftsemijoin",
"mapjoin_subquery2",
"nomore_ambiguous_table_col",
"partition_date",
"partition_varchar1",
"ppd_repeated_alias",
"push_or",
"reducesink_dedup",
"subquery_in",
"subquery_notin_having",
"timestamp_3",
"timestamp_lazy",
"udaf_covar_pop",
"union31",
"union_date",
"varchar_2",
"varchar_join1",
// This test assumes we parse scientific decimals as doubles (we parse them as decimals)
"literal_double",
// These tests are duplicates of joinXYZ
"auto_join0",
"auto_join1",
"auto_join10",
"auto_join11",
"auto_join12",
"auto_join13",
"auto_join14",
"auto_join14_hadoop20",
"auto_join15",
"auto_join17",
"auto_join18",
"auto_join2",
"auto_join20",
"auto_join21",
"auto_join23",
"auto_join24",
"auto_join3",
"auto_join4",
"auto_join5",
"auto_join6",
"auto_join7",
"auto_join8",
"auto_join9",
// These tests are based on the Hive's hash function, which is different from Spark
"auto_join19",
"auto_join22",
"auto_join25",
"auto_join26",
"auto_join27",
"auto_join28",
"auto_join30",
"auto_join31",
"auto_join_nulls",
"auto_join_reordering_values",
"correlationoptimizer1",
"correlationoptimizer2",
"correlationoptimizer3",
"correlationoptimizer4",
"multiMapJoin1",
"orc_dictionary_threshold",
"udf_hash"
)
/**
* The set of tests that are believed to be working in catalyst. Tests not on whiteList or
* blacklist are implicitly marked as ignored.
*/
override def whiteList: Seq[String] = Seq(
"add_part_exist",
"add_part_multiple",
"add_partition_no_whitelist",
"add_partition_with_whitelist",
"alias_casted_column",
"alter_partition_with_whitelist",
"ambiguous_col",
"annotate_stats_join",
"annotate_stats_limit",
"annotate_stats_part",
"annotate_stats_table",
"annotate_stats_union",
"binary_constant",
"binarysortable_1",
"cast1",
"cluster",
"combine1",
"compute_stats_binary",
"compute_stats_boolean",
"compute_stats_double",
"compute_stats_empty_table",
"compute_stats_long",
"compute_stats_string",
"convert_enum_to_string",
"correlationoptimizer10",
"correlationoptimizer11",
"correlationoptimizer13",
"correlationoptimizer14",
"correlationoptimizer15",
"correlationoptimizer6",
"correlationoptimizer7",
"correlationoptimizer8",
"correlationoptimizer9",
"count",
"cp_mj_rc",
"create_insert_outputformat",
"create_nested_type",
"create_struct_table",
"create_view_translate",
"cross_join",
"cross_product_check_1",
"cross_product_check_2",
"database_drop",
"database_location",
"database_properties",
"date_2",
"date_comparison",
"decimal_1",
"decimal_4",
"decimal_join",
"default_partition_name",
"delimiter",
"desc_non_existent_tbl",
"disable_file_format_check",
"distinct_stats",
"drop_function",
"drop_multi_partitions",
"drop_table",
"drop_table2",
"drop_view",
"dynamic_partition_skip_default",
"escape_clusterby1",
"escape_distributeby1",
"escape_orderby1",
"escape_sortby1",
"fileformat_sequencefile",
"fileformat_text",
"filter_join_breaktask",
"filter_join_breaktask2",
"groupby1",
"groupby11",
"groupby12",
"groupby1_limit",
"groupby_grouping_sets2",
"groupby_grouping_sets3",
"groupby_grouping_sets4",
"groupby_grouping_sets5",
"groupby1_map",
"groupby1_map_nomap",
"groupby1_map_skew",
"groupby1_noskew",
"groupby2",
"groupby2_limit",
"groupby2_map",
"groupby2_map_skew",
"groupby2_noskew",
"groupby4",
"groupby4_map",
"groupby4_map_skew",
"groupby4_noskew",
"groupby5",
"groupby5_map",
"groupby5_map_skew",
"groupby5_noskew",
"groupby6",
"groupby6_map",
"groupby6_map_skew",
"groupby6_noskew",
"groupby7",
"groupby7_map",
"groupby7_map_multi_single_reducer",
"groupby7_map_skew",
"groupby7_noskew",
"groupby7_noskew_multi_single_reducer",
"groupby8",
"groupby8_map",
"groupby8_map_skew",
"groupby8_noskew",
"groupby9",
"groupby_distinct_samekey",
"groupby_map_ppr",
"groupby_multi_insert_common_distinct",
"groupby_multi_single_reducer2",
"groupby_multi_single_reducer3",
"groupby_mutli_insert_common_distinct",
"groupby_neg_float",
"groupby_ppd",
"groupby_ppr",
"groupby_sort_6",
"having",
"implicit_cast1",
"index_serde",
"infer_bucket_sort_dyn_part",
"innerjoin",
"input",
"input0",
"input1",
"input10",
"input11",
"input11_limit",
"input12",
"input12_hadoop20",
"input14",
"input15",
"input19",
"input1_limit",
"input2",
"input21",
"input22",
"input23",
"input24",
"input25",
"input26",
"input28",
"input2_limit",
"input40",
"input41",
"input49",
"input4_cb_delim",
"input6",
"input7",
"input8",
"input9",
"input_limit",
"input_part0",
"input_part1",
"input_part2",
"input_part3",
"input_part4",
"input_part5",
"input_part6",
"input_part7",
"input_part8",
"input_part9",
"input_testsequencefile",
"inputddl1",
"inputddl2",
"inputddl3",
"inputddl8",
"insert1",
"insert1_overwrite_partitions",
"insert2_overwrite_partitions",
"join1",
"join10",
"join11",
"join12",
"join13",
"join14",
"join14_hadoop20",
"join15",
"join16",
"join17",
"join18",
"join19",
"join2",
"join20",
"join21",
"join22",
"join23",
"join24",
"join25",
"join26",
"join27",
"join28",
"join29",
"join3",
"join30",
"join31",
"join32",
"join32_lessSize",
"join33",
"join34",
"join35",
"join36",
"join37",
"join38",
"join39",
"join4",
"join40",
"join41",
"join5",
"join6",
"join7",
"join8",
"join9",
"join_1to1",
"join_array",
"join_casesensitive",
"join_empty",
"join_hive_626",
"join_map_ppr",
"join_rc",
"join_reorder2",
"join_reorder3",
"join_reorder4",
"join_star",
"lateral_view",
"lateral_view_noalias",
"lateral_view_ppd",
"leftsemijoin_mr",
"limit_pushdown_negative",
"lineage1",
"literal_ints",
"literal_string",
"load_dyn_part1",
"load_dyn_part10",
"load_dyn_part11",
"load_dyn_part12",
"load_dyn_part13",
"load_dyn_part14",
"load_dyn_part14_win",
"load_dyn_part3",
"load_dyn_part4",
"load_dyn_part5",
"load_dyn_part6",
"load_dyn_part7",
"load_dyn_part8",
"load_dyn_part9",
"load_file_with_space_in_the_name",
"loadpart1",
"louter_join_ppr",
"mapjoin_distinct",
"mapjoin_filter_on_outerjoin",
"mapjoin_mapjoin",
"mapjoin_subquery",
"mapjoin_test_outer",
"mapreduce1",
"mapreduce2",
"mapreduce3",
"mapreduce4",
"mapreduce5",
"mapreduce6",
"mapreduce7",
"mapreduce8",
"merge1",
"merge2",
"merge4",
"mergejoins",
"multiMapJoin2",
"multi_insert_gby",
"multi_insert_gby3",
"multi_insert_lateral_view",
"multi_join_union",
"multigroupby_singlemr",
"noalias_subq1",
"nonblock_op_deduplicate",
"notable_alias1",
"notable_alias2",
"nullformatCTAS",
"nullgroup",
"nullgroup2",
"nullgroup3",
"nullgroup4",
"nullgroup4_multi_distinct",
"nullgroup5",
"nullinput",
"nullinput2",
"nullscript",
"optional_outer",
"order",
"order2",
"outer_join_ppr",
"parallel",
"parenthesis_star_by",
"part_inherit_tbl_props",
"part_inherit_tbl_props_with_star",
"partcols1",
"partition_serde_format",
"partition_type_check",
"partition_wise_fileformat9",
"ppd1",
"ppd2",
"ppd_clusterby",
"ppd_constant_expr",
"ppd_constant_where",
"ppd_gby",
"ppd_gby2",
"ppd_gby_join",
"ppd_join",
"ppd_join2",
"ppd_join3",
"ppd_join_filter",
"ppd_outer_join1",
"ppd_outer_join2",
"ppd_outer_join3",
"ppd_outer_join4",
"ppd_outer_join5",
"ppd_random",
"ppd_udf_col",
"ppd_union",
"ppr_allchildsarenull",
"ppr_pushdown",
"ppr_pushdown2",
"ppr_pushdown3",
"progress_1",
"query_with_semi",
"quote1",
"quote2",
"rcfile_columnar",
"rcfile_lazydecompress",
"rcfile_null_value",
"rcfile_toleratecorruptions",
"rcfile_union",
"reduce_deduplicate_exclude_gby",
"reduce_deduplicate_exclude_join",
"reduce_deduplicate_extended",
"router_join_ppr",
"select_as_omitted",
"select_unquote_and",
"select_unquote_not",
"select_unquote_or",
"semicolon",
"semijoin",
"serde_regex",
"set_variable_sub",
"show_columns",
"show_describe_func_quotes",
"show_functions",
"show_partitions",
"show_tblproperties",
"sort",
"stats_aggregator_error_1",
"stats_publisher_error_1",
"subq2",
"subquery_exists",
"subquery_exists_having",
"subquery_notexists",
"subquery_notexists_having",
"subquery_in_having",
"tablename_with_select",
"timestamp_comparison",
"timestamp_null",
"transform_ppr1",
"transform_ppr2",
"type_cast_1",
"type_widening",
"udaf_collect_set",
"udaf_histogram_numeric",
"udf2",
"udf5",
"udf6",
"udf8",
"udf9",
"udf_10_trims",
"udf_E",
"udf_PI",
"udf_acos",
"udf_add",
// "udf_array", -- done in array.sql
// "udf_array_contains", -- done in array.sql
"udf_ascii",
"udf_asin",
"udf_atan",
"udf_avg",
"udf_bigint",
"udf_bin",
"udf_bitmap_and",
"udf_bitmap_empty",
"udf_bitmap_or",
"udf_bitwise_and",
"udf_bitwise_not",
"udf_bitwise_or",
"udf_bitwise_xor",
"udf_boolean",
"udf_case",
"udf_ceil",
"udf_ceiling",
"udf_concat",
"udf_concat_insert1",
"udf_concat_insert2",
"udf_concat_ws",
"udf_conv",
"udf_cos",
"udf_count",
"udf_date_add",
"udf_date_sub",
"udf_datediff",
"udf_day",
"udf_dayofmonth",
"udf_degrees",
"udf_div",
"udf_double",
"udf_elt",
"udf_equal",
"udf_exp",
"udf_find_in_set",
"udf_float",
"udf_floor",
"udf_from_unixtime",
"udf_greaterthan",
"udf_greaterthanorequal",
"udf_hex",
"udf_if",
"udf_index",
"udf_instr",
"udf_int",
"udf_isnotnull",
"udf_isnull",
"udf_lcase",
"udf_length",
"udf_lessthan",
"udf_lessthanorequal",
"udf_like",
"udf_ln",
"udf_locate",
"udf_log",
"udf_log10",
"udf_log2",
"udf_lower",
"udf_lpad",
"udf_ltrim",
"udf_map",
"udf_modulo",
"udf_month",
"udf_named_struct",
"udf_negative",
"udf_not",
"udf_notequal",
"udf_notop",
"udf_nvl",
"udf_or",
"udf_parse_url",
"udf_pmod",
"udf_positive",
"udf_pow",
"udf_power",
"udf_radians",
"udf_rand",
"udf_regexp",
"udf_regexp_extract",
"udf_regexp_replace",
"udf_repeat",
"udf_rlike",
"udf_rpad",
"udf_rtrim",
"udf_sign",
"udf_sin",
"udf_smallint",
"udf_space",
"udf_sqrt",
"udf_std",
"udf_stddev",
"udf_stddev_pop",
"udf_stddev_samp",
"udf_string",
"udf_struct",
"udf_substring",
"udf_subtract",
"udf_sum",
"udf_tan",
"udf_tinyint",
"udf_to_byte",
"udf_to_date",
"udf_to_double",
"udf_to_float",
"udf_to_long",
"udf_to_short",
"udf_translate",
"udf_trim",
"udf_ucase",
"udf_unix_timestamp",
"udf_unhex",
"udf_upper",
"udf_var_pop",
"udf_var_samp",
"udf_variance",
"udf_weekofyear",
"udf_when",
"union10",
"union11",
"union13",
"union14",
"union15",
"union16",
"union17",
"union18",
"union19",
"union2",
"union20",
"union22",
"union23",
"union24",
"union25",
"union26",
"union27",
"union28",
"union29",
"union3",
"union30",
"union33",
"union34",
"union4",
"union5",
"union6",
"union7",
"union8",
"union9",
"union_lateralview",
"union_ppr",
"union_remove_6",
"union_script",
"varchar_union1",
"view",
"view_cast",
"view_inputs"
)
}