mirror of
https://github.com/apache/impala.git
synced 2026-01-07 09:02:19 -05:00
In some cases, the lookup for the first_value_rewrite function could return a different fn with the wrong (yet technically compatible) type. first_value_rewrite takes 2 parameters, the first is the parameter to first_value, and the second is an integer explicitly added by the FE during analysis. first_value_rewrite has signatures where the first parameter can be of any type and the second is always a BIGINT. When the FE inserts the second parameter, it may not actually be a BIGINT (e.g. it could be a TINYINT, SMALLINT, etc.). In this case, the function arguments will not match one of the registered signatures exactly and some compatable function will be returned. For example, FIRST_VALUE(1.1) has a DECIMAL parameter and if a TINYINT/SMALLINT/INT parameter is added for the rewrite, then the first_value_rewrite fn lookup happened to match the fn taking a FLOAT and BIGINT. (Ideally DECIMAL would not be implicitly castable to a FLOAT/DOUBLE, but NumericLiterals do allow this casting.) As a result, the agg fn actually returned a FLOAT while the AnalyticExpr was of the type DECIMAL, and the analytic tuple contained a DECIMAL slot which would throw a DCHECK in the BE (or perhaps crash in retail builds). This fixes the issue by setting the NumericLiterals to be explicitlyCast, i.e. the type will not change if re-analyzed. Then the correct fn signature is found. Change-Id: I1cefa3e29734ae647bd690263bb63f08f10ea8b9 Reviewed-on: http://gerrit.cloudera.org:8080/136 Reviewed-by: Alex Behm <alex.behm@cloudera.com> Tested-by: Internal Jenkins
This directory contains Impala test workloads. The directory layout for the workloads should follow: workloads/ <data set name>/<data set name>_dimensions.csv <- The test dimension file <data set name>/<data set name>_core.csv <- A test vector file <data set name>/<data set name>_pairwise.csv <data set name>/<data set name>_exhaustive.csv <data set name>/queries/<query test>.test <- The queries for this workload