1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.data.pipeline.core.sqlbuilder.sql;
19
20 import org.apache.shardingsphere.data.pipeline.core.sqlbuilder.dialect.DialectPipelineSQLBuilder;
21 import org.apache.shardingsphere.data.pipeline.core.sqlbuilder.segment.PipelineSQLSegmentBuilder;
22 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
23 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
24
25 import java.util.Optional;
26
27
28
29
30 public final class PipelinePrepareSQLBuilder {
31
32 private final DialectPipelineSQLBuilder dialectSQLBuilder;
33
34 private final PipelineSQLSegmentBuilder sqlSegmentBuilder;
35
36 public PipelinePrepareSQLBuilder(final DatabaseType databaseType) {
37 dialectSQLBuilder = DatabaseTypedSPILoader.getService(DialectPipelineSQLBuilder.class, databaseType);
38 sqlSegmentBuilder = new PipelineSQLSegmentBuilder(databaseType);
39 }
40
41
42
43
44
45
46
47 public Optional<String> buildCreateSchemaSQL(final String schemaName) {
48 return dialectSQLBuilder.buildCreateSchemaSQL(sqlSegmentBuilder.getEscapedIdentifier(schemaName));
49 }
50
51
52
53
54
55
56
57
58 public String buildDropSQL(final String schemaName, final String tableName) {
59 return String.format("DROP TABLE IF EXISTS %s", sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName));
60 }
61
62
63
64
65
66
67
68
69 public String buildCountSQL(final String schemaName, final String tableName) {
70 return String.format("SELECT COUNT(*) FROM %s", sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName));
71 }
72
73
74
75
76
77
78
79
80 public Optional<String> buildEstimatedCountSQL(final String schemaName, final String tableName) {
81 return dialectSQLBuilder.buildEstimatedCountSQL(sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName));
82 }
83
84
85
86
87
88
89
90
91
92 public String buildUniqueKeyMinMaxValuesSQL(final String schemaName, final String tableName, final String uniqueKey) {
93 String escapedUniqueKey = sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
94 return String.format("SELECT MIN(%s), MAX(%s) FROM %s", escapedUniqueKey, escapedUniqueKey, sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName));
95 }
96
97
98
99
100
101
102
103
104 public String buildCheckEmptyTableSQL(final String schemaName, final String tableName) {
105 return dialectSQLBuilder.buildCheckEmptyTableSQL(sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName));
106 }
107 }