Remove wrong CAST AST Node in coral-hive #511
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What changes are proposed in this pull request, and why are they necessary?
There are two mechanisms in antlr v3 for building abstract syntax trees (ASTs): operators and rewrite rules.
-> Using the antlr3 rewrite symbol ^ tree construction operator
By inspecting all the AST nodes produced by the hive 1 antlr3 grammar files, we can see that KW_CAST is not used as a node in the Hive AST. The AbstractASTVisitor is designed to visit all non-DDL AST nodes, so KW_CAST needs to be removed.
I wrote a simple demo that prints the AST including the CAST syntax. It is transformed into a TOK_FUNCTION node, which validates the above points.
String src10 = "SELECT id,name,CAST(salary AS FLOAT) as salary_float FROM employees";
ASTNode root = parseDriver.parse(src10).getTree();
System.out.println(root.dump());
How was this patch tested?
Test: The ParseTreeBuilderTest.java contains tests with SQL that includes the cast method. All Hive tests have passed.
@wmoustafa Please help review it.