1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sql.parser.sql.common.statement.dml;
19
20 import lombok.Getter;
21 import lombok.Setter;
22 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment;
23 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
24 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.InsertColumnsSegment;
25 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.subquery.SubquerySegment;
26 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
27 import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
28
29 import java.util.Collection;
30 import java.util.Collections;
31 import java.util.LinkedList;
32 import java.util.Optional;
33
34
35
36
37 @Getter
38 @Setter
39 public abstract class InsertStatement extends AbstractSQLStatement implements DMLStatement {
40
41 private SimpleTableSegment table;
42
43 private InsertColumnsSegment insertColumns;
44
45 private SubquerySegment insertSelect;
46
47 private final Collection<InsertValuesSegment> values = new LinkedList<>();
48
49 private final Collection<ColumnSegment> derivedInsertColumns = new LinkedList<>();
50
51
52
53
54
55
56 public Optional<InsertColumnsSegment> getInsertColumns() {
57 return Optional.ofNullable(insertColumns);
58 }
59
60
61
62
63
64
65 public Collection<ColumnSegment> getColumns() {
66 return null == insertColumns ? Collections.emptyList() : insertColumns.getColumns();
67 }
68
69
70
71
72
73
74 public Optional<SubquerySegment> getInsertSelect() {
75 return Optional.ofNullable(insertSelect);
76 }
77 }