关于 spark sql parser 的源码, 看不懂,求指导
資深大佬 : scalaer 25
class AstBuilder(conf: SQLConf) extends SqlBaseBaseVisitor[AnyRef] with Logging { ... override def visitSingleStatement(ctx: SingleStatementContext): LogicalPlan = withOrigin(ctx) { visit(ctx.statement).asInstanceOf[LogicalPlan] } }
visit是 antlr 的AbstractParseTreeVisitor的一个方法, 返回类型是 T, 函数签名如下
public T visit(ParseTree tree) { return tree.accept(this); }
我的疑问是为什么可以将返回类型转成 LogicalPlan, 这个过程发生了啥??
大佬有話說 (7)