Impala Public Jenkins has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/20184 )
Change subject: IMPALA-10173: (Addendum) Fix substitution for unsafe expressions, column-level compatibility check ...................................................................... IMPALA-10173: (Addendum) Fix substitution for unsafe expressions, column-level compatibility check Expression substitution recreates cast expressions without considering the compatibility level introduced by IMPALA-10173. In unsafe mode, the recreation causes IllegalStateException. This change fixes this behavior by storing the compatibility level in each CastExpr, and reusing it when the expression substitution recreates the cast expression. For example: 'select "1", "1" union select 1, "1"' Also, Set operation's common type calculations did not distinguish compatibility levels for each column slot, if one column slot's common type was considered unsafe, every other slot was treated as unsafe. This change fixes this behavior by reinitializing the compatibility level for every column slot, enabling cases where one column slot contains unsafely casted constant values and another contains non-constant expressions with regular casts. These queries failed before this change with 'Unsafe implicit cast is prohibited for non-const expression' error. For example: 'select "1", 1 union select 1, int_col from unsafe_insert' Tests: - test cases added to insert-unsafe.test Change-Id: I39d13f177482f74ec39570118adab609444c6929 Reviewed-on: http://gerrit.cloudera.org:8080/20184 Reviewed-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> --- M fe/src/main/java/org/apache/impala/analysis/Analyzer.java M fe/src/main/java/org/apache/impala/analysis/BoolLiteral.java M fe/src/main/java/org/apache/impala/analysis/CastExpr.java M fe/src/main/java/org/apache/impala/analysis/DateLiteral.java M fe/src/main/java/org/apache/impala/analysis/Expr.java M fe/src/main/java/org/apache/impala/analysis/NullLiteral.java M fe/src/main/java/org/apache/impala/analysis/NumericLiteral.java M fe/src/main/java/org/apache/impala/analysis/SlotRef.java M fe/src/main/java/org/apache/impala/analysis/StringLiteral.java M fe/src/main/java/org/apache/impala/analysis/TimestampLiteral.java M fe/src/test/java/org/apache/impala/analysis/NumericLiteralTest.java M testdata/workloads/functional-query/queries/QueryTest/insert-unsafe.test 12 files changed, 103 insertions(+), 55 deletions(-) Approvals: Impala Public Jenkins: Looks good to me, approved; Verified -- To view, visit http://gerrit.cloudera.org:8080/20184 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I39d13f177482f74ec39570118adab609444c6929 Gerrit-Change-Number: 20184 Gerrit-PatchSet: 7 Gerrit-Owner: Peter Rozsa <pro...@cloudera.com> Gerrit-Reviewer: Daniel Becker <daniel.bec...@cloudera.com> Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Gerrit-Reviewer: Peter Rozsa <pro...@cloudera.com>