sql
create table default .target_table LOCATION '/data/location' as select a,b,d,e,f,g from log.source_table
生成的ast树
(TOK_CREATETABLE (TOK_TABNAME default target_table) TOK_LIKETABLE (TOK_TABLELOCATION '/data /location' ) (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME log source_table ) )) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE ) ) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL a ) ) (TOK_SELEXPR (TOK_TABLE_OR_COL b ) ) (TOK_SELEXPR (TOK_TABLE_OR_COL d ) ) (TOK_SELEXPR (TOK_TABLE_OR_COL e ) ) (TOK_SELEXPR (TOK_TABLE_OR_COL f ) ) (TOK_SELEXPR (TOK_TABLE_OR_COL g ) ))))) <EOF >
树结构
解析过程
调用org.apache.hadoop.hive.ql.parse的ParseDriver的parse方法,生成sql的ast树 后序遍历ast树 解析每个节点
结果
inputTable :[log.source_table]
outputTable :[default.target_table]
ToTable :default .target_table ,ToNameParse :a ,ToName :null ,FromName :[log.source_table.a] ,AllCondition :[]
ToTable :default .target_table ,ToNameParse :b ,ToName :null ,FromName :[log.source_table.b] ,AllCondition :[]
ToTable :default .target_table ,ToNameParse :d ,ToName :null ,FromName :[log.source_table.d] ,AllCondition :[]
ToTable :default .target_table ,ToNameParse :e ,ToName :null ,FromName :[log.source_table.e] ,AllCondition :[]
ToTable :default .target_table ,ToNameParse :f ,ToName :null ,FromName :[log.source_table.f] ,AllCondition :[]
ToTable :default .target_table ,ToNameParse :g ,ToName :null ,FromName :[log.source_table.g] ,AllCondition :[]