private void extractTablesFromExpression()

in parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/extractor/TableExtractor.java [144:196]


    private void extractTablesFromExpression(final ExpressionSegment expressionSegment) {
        if (expressionSegment instanceof ColumnSegment) {
            extractTablesFromColumnSegments(Collections.singleton((ColumnSegment) expressionSegment));
        }
        if (expressionSegment instanceof ListExpression) {
            ((ListExpression) expressionSegment).getItems().forEach(this::extractTablesFromExpression);
        }
        if (expressionSegment instanceof ExistsSubqueryExpression) {
            extractTablesFromSelect(((ExistsSubqueryExpression) expressionSegment).getSubquery().getSelect());
        }
        if (expressionSegment instanceof BetweenExpression) {
            extractTablesFromExpression(((BetweenExpression) expressionSegment).getLeft());
            extractTablesFromExpression(((BetweenExpression) expressionSegment).getBetweenExpr());
            extractTablesFromExpression(((BetweenExpression) expressionSegment).getAndExpr());
        }
        if (expressionSegment instanceof InExpression) {
            extractTablesFromExpression(((InExpression) expressionSegment).getLeft());
            extractTablesFromExpression(((InExpression) expressionSegment).getRight());
        }
        if (expressionSegment instanceof SubqueryExpressionSegment) {
            extractTablesFromSelect(((SubqueryExpressionSegment) expressionSegment).getSubquery().getSelect());
        }
        if (expressionSegment instanceof SubquerySegment) {
            extractTablesFromSelect(((SubquerySegment) expressionSegment).getSelect());
        }
        if (expressionSegment instanceof BinaryOperationExpression) {
            extractTablesFromExpression(((BinaryOperationExpression) expressionSegment).getLeft());
            extractTablesFromExpression(((BinaryOperationExpression) expressionSegment).getRight());
        }
        if (expressionSegment instanceof MatchAgainstExpression) {
            ((MatchAgainstExpression) expressionSegment).getColumns().forEach(this::extractTablesFromExpression);
            extractTablesFromExpression(((MatchAgainstExpression) expressionSegment).getExpr());
        }
        if (expressionSegment instanceof FunctionSegment) {
            ((FunctionSegment) expressionSegment).getParameters().forEach(this::extractTablesFromExpression);
        }
        if (expressionSegment instanceof CaseWhenExpression) {
            extractTablesFromCaseWhenExpression((CaseWhenExpression) expressionSegment);
        }
        if (expressionSegment instanceof CollateExpression) {
            extractTablesFromExpression(((CollateExpression) expressionSegment).getCollateName());
        }
        if (expressionSegment instanceof DatetimeExpression) {
            extractTablesFromExpression(((DatetimeExpression) expressionSegment).getLeft());
            extractTablesFromExpression(((DatetimeExpression) expressionSegment).getRight());
        }
        if (expressionSegment instanceof NotExpression) {
            extractTablesFromExpression(((NotExpression) expressionSegment).getExpression());
        }
        if (expressionSegment instanceof TypeCastExpression) {
            extractTablesFromExpression(((TypeCastExpression) expressionSegment).getExpression());
        }
    }