1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.binder.segment.with;
19
20 import lombok.AccessLevel;
21 import lombok.NoArgsConstructor;
22 import org.apache.shardingsphere.infra.binder.segment.expression.impl.SubquerySegmentBinder;
23 import org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinderContext;
24 import org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
25 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonTableExpressionSegment;
26 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.subquery.SubquerySegment;
27
28 import java.util.Map;
29
30
31
32
33 @NoArgsConstructor(access = AccessLevel.PRIVATE)
34 public final class CommonTableExpressionSegmentBinder {
35
36
37
38
39
40
41
42
43
44 public static CommonTableExpressionSegment bind(final CommonTableExpressionSegment segment, final SQLStatementBinderContext statementBinderContext,
45 final Map<String, TableSegmentBinderContext> tableBinderContexts) {
46 SubquerySegment boundedSubquerySegment = SubquerySegmentBinder.bind(segment.getSubquery(), statementBinderContext, tableBinderContexts);
47 CommonTableExpressionSegment result = new CommonTableExpressionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getIdentifier(), boundedSubquerySegment);
48
49 result.getColumns().addAll(segment.getColumns());
50 return result;
51 }
52 }