Repository: incubator-impala Updated Branches: refs/heads/master acb25a6d1 -> 50b2b888c
IMPALA-4240: qgen: Add "ParseException line missing )" to Known Errors for Hive There is a bug in Hive with parenthesis parsing for PARTITION BY clauses. Full details can be found in https://issues.apache.org/jira/browse/HIVE-14871. Fixing this issue in Hive isn't trivial, so it should be marked as a "Known Error" in the qgen code. The exception printed by Hive is of the form: FAILED: ParseException line ?:? missing ) at '?' near '?' line ?:? missing EOF at '?' near '?' (state=42000,code=40000) Testing: * All unit tests are passing * Tested against Hive locally * Tested against Impala via the discrepancy searcher Change-Id: Iba3ff4c667ad43ab0927fb19da3dd36ba6504058 Reviewed-on: http://gerrit.cloudera.org:8080/4587 Reviewed-by: Taras Bobrovytsky <[email protected]> Tested-by: Taras Bobrovytsky <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/50b2b888 Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/50b2b888 Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/50b2b888 Branch: refs/heads/master Commit: 50b2b888cd9053c013d4c2e5c34f0107e0d44036 Parents: acb25a6 Author: Sahil Takiar <[email protected]> Authored: Sat Oct 1 09:48:27 2016 -0700 Committer: Taras Bobrovytsky <[email protected]> Committed: Fri Oct 7 19:59:38 2016 +0000 ---------------------------------------------------------------------- tests/comparison/discrepancy_searcher.py | 51 ++++++++++++++++----------- 1 file changed, 30 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/50b2b888/tests/comparison/discrepancy_searcher.py ---------------------------------------------------------------------- diff --git a/tests/comparison/discrepancy_searcher.py b/tests/comparison/discrepancy_searcher.py index 11f65c0..a1e60e2 100755 --- a/tests/comparison/discrepancy_searcher.py +++ b/tests/comparison/discrepancy_searcher.py @@ -47,6 +47,7 @@ from db_connection import ( from model_translator import SqlWriter from query_flattener import QueryFlattener from query_generator import QueryGenerator +from tests.comparison import db_connection LOG = getLogger(__name__) @@ -111,27 +112,35 @@ class QueryResultComparator(object): # "known errors" will be ignored error_message = str(test_exception) known_error = None - if 'Expressions in the ORDER BY clause must not be constant' in error_message \ - or 'Expressions in the PARTITION BY clause must not be consta' in error_message: - # It's too much work to avoid this bug. Just ignore it if it comes up. - known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1354') - elif 'GROUP BY expression must not contain aggregate functions' in error_message \ - or 'select list expression not produced by aggregation output' in error_message: - known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1423') - elif ('max(' in error_message or 'min(' in error_message) \ - and 'only supported with an UNBOUNDED PRECEDING start bound' in error_message: - # This analytic isn't supported and ignoring this here is much easier than not - # generating the query... - known_error = KnownError('MAX UNBOUNDED PRECISION') - elif 'IN and/or EXISTS subquery predicates are not supported in binary predicates' \ - in error_message: - known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1418') - elif 'Unsupported predicate with subquery' in error_message: - known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1950') - elif 'RIGHT OUTER JOIN type with no equi-join' in error_message: - known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-3063') - elif 'Operation is in ERROR_STATE' in error_message: - known_error = KnownError('Mem limit exceeded') + + if self.test_db_type is db_connection.IMPALA: + if 'Expressions in the ORDER BY clause must not be constant' in error_message \ + or 'Expressions in the PARTITION BY clause must not be consta' in error_message: + # It's too much work to avoid this bug. Just ignore it if it comes up. + known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1354') + elif 'GROUP BY expression must not contain aggregate functions' in error_message \ + or 'select list expression not produced by aggregation output' in error_message: + known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1423') + elif ('max(' in error_message or 'min(' in error_message) \ + and 'only supported with an UNBOUNDED PRECEDING start bound' in error_message: + # This analytic isn't supported and ignoring this here is much easier than not + # generating the query... + known_error = KnownError('MAX UNBOUNDED PRECISION') + elif 'IN and/or EXISTS subquery predicates are not supported in binary predicates' \ + in error_message: + known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1418') + elif 'Unsupported predicate with subquery' in error_message: + known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-1950') + elif 'RIGHT OUTER JOIN type with no equi-join' in error_message: + known_error = KnownError('https://issues.cloudera.org/browse/IMPALA-3063') + elif 'Operation is in ERROR_STATE' in error_message: + known_error = KnownError('Mem limit exceeded') + elif self.test_db_type is db_connection.HIVE: + if 'ParseException line' in error_message and 'missing ) at' in \ + error_message and query.select_clause and \ + query.select_clause.analytic_items: + known_error = KnownError("https://issues.apache.org/jira/browse/HIVE-14871") + if known_error: comparison_result.exception = known_error else:
