@@ -319,23 +319,23 @@ private List<String> convertPrimaryAlias(AbstractSideTableInfo sideTableInfo) {
319319 * @param conditionNode
320320 * @param joinScope
321321 */
322- public void checkConditionFieldsInTable (SqlNode conditionNode , JoinScope joinScope , Map < String , AbstractSideTableInfo > sideTableMap ) {
322+ public void checkConditionFieldsInTable (SqlNode conditionNode , JoinScope joinScope , AbstractSideTableInfo sideTableInfo ) {
323323 List <SqlNode > sqlNodeList = Lists .newArrayList ();
324324 ParseUtils .parseAnd (conditionNode , sqlNodeList );
325325 for (SqlNode sqlNode : sqlNodeList ) {
326326 if (!SqlKind .COMPARISON .contains (sqlNode .getKind ())) {
327- throw new RuntimeException ("not compare operator." );
327+ throw new RuntimeException ("It is not comparison operator." );
328328 }
329329
330330 SqlNode leftNode = ((SqlBasicCall ) sqlNode ).getOperands ()[0 ];
331331 SqlNode rightNode = ((SqlBasicCall ) sqlNode ).getOperands ()[1 ];
332332
333333 if (leftNode .getKind () == SqlKind .IDENTIFIER ) {
334- checkFieldInTable ((SqlIdentifier ) leftNode , joinScope , conditionNode , sideTableMap );
334+ checkFieldInTable ((SqlIdentifier ) leftNode , joinScope , conditionNode , sideTableInfo );
335335 }
336336
337337 if (rightNode .getKind () == SqlKind .IDENTIFIER ) {
338- checkFieldInTable ((SqlIdentifier ) rightNode , joinScope , conditionNode , sideTableMap );
338+ checkFieldInTable ((SqlIdentifier ) rightNode , joinScope , conditionNode , sideTableInfo );
339339 }
340340
341341 }
@@ -347,7 +347,7 @@ public void checkConditionFieldsInTable(SqlNode conditionNode, JoinScope joinSco
347347 * @param joinScope
348348 * @param conditionNode
349349 */
350- private void checkFieldInTable (SqlIdentifier sqlNode , JoinScope joinScope , SqlNode conditionNode , Map < String , AbstractSideTableInfo > sideTableMap ) {
350+ private void checkFieldInTable (SqlIdentifier sqlNode , JoinScope joinScope , SqlNode conditionNode , AbstractSideTableInfo sideTableInfo ) {
351351 String tableName = sqlNode .getComponent (0 ).getSimple ();
352352 String fieldName = sqlNode .getComponent (1 ).getSimple ();
353353 JoinScope .ScopeChild scopeChild = joinScope .getScope (tableName );
@@ -364,7 +364,6 @@ private void checkFieldInTable(SqlIdentifier sqlNode, JoinScope joinScope, SqlNo
364364 ArrayList <String > allFieldNames = new ArrayList (
365365 Arrays .asList (fieldNames )
366366 );
367- AbstractSideTableInfo sideTableInfo = sideTableMap .get (tableName );
368367 // HBase、Redis这种NoSQL Primary Key不在字段列表中,所以要加进去。
369368 if (sideTableInfo != null ) {
370369 List <String > pks = sideTableInfo .getPrimaryKeys ();
@@ -497,7 +496,8 @@ private void joinFun(Object pollObj,
497496 joinScope .addScope (rightScopeChild );
498497
499498 HashBasedTable <String , String , String > mappingTable = ((JoinInfo ) pollObj ).getTableFieldRef ();
500- checkConditionFieldsInTable (joinInfo .getCondition (), joinScope , sideTableMap );
499+ // 检查JOIN等式字段是否在原表中
500+ checkConditionFieldsInTable (joinInfo .getCondition (), joinScope , sideTableInfo );
501501
502502 //获取两个表的所有字段
503503 List <FieldInfo > sideJoinFieldInfo = ParserJoinField .getRowTypeInfo (joinInfo .getSelectNode (), joinScope , true );
0 commit comments