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.metadata.generator;
19
20 import lombok.AccessLevel;
21 import lombok.NoArgsConstructor;
22 import lombok.extern.slf4j.Slf4j;
23 import org.apache.shardingsphere.data.pipeline.core.sqlbuilder.dialect.DialectPipelineSQLBuilder;
24 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
25 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
26
27 import javax.sql.DataSource;
28 import java.sql.SQLException;
29 import java.util.ArrayList;
30 import java.util.List;
31
32
33
34
35 @NoArgsConstructor(access = AccessLevel.PRIVATE)
36 @Slf4j
37 public final class PipelineDDLGenerator {
38
39
40
41
42
43
44
45
46
47
48
49
50 public static List<String> generateLogicDDL(final DatabaseType databaseType, final DataSource sourceDataSource,
51 final String schemaName, final String sourceTableName, final String targetTableName) throws SQLException {
52 long startTimeMillis = System.currentTimeMillis();
53 List<String> result = new ArrayList<>(DatabaseTypedSPILoader.getService(DialectPipelineSQLBuilder.class, databaseType)
54 .buildCreateTableSQLs(sourceDataSource, schemaName, sourceTableName));
55 log.info("generateLogicDDL, databaseType={}, schemaName={}, sourceTableName={}, targetTableName={}, cost {} ms",
56 databaseType.getType(), schemaName, sourceTableName, targetTableName, System.currentTimeMillis() - startTimeMillis);
57 return result;
58 }
59 }