mirror of
https://gitee.com/dromara/dbswitch.git
synced 2025-09-29 06:52:44 +00:00
添加Greenplum插件
This commit is contained in:
36
dbswitch-product/dbswitch-product-greenplum/pom.xml
Normal file
36
dbswitch-product/dbswitch-product-greenplum/pom.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>dbswitch-product</artifactId>
|
||||
<groupId>com.gitee.dbswitch</groupId>
|
||||
<version>1.9.8</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>dbswitch-product-greenplum</artifactId>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.gitee.dbswitch</groupId>
|
||||
<artifactId>dbswitch-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.gitee.dbswitch</groupId>
|
||||
<artifactId>dbswitch-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.gitee.dbswitch</groupId>
|
||||
<artifactId>dbswitch-product-postgresql</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@@ -0,0 +1,21 @@
|
||||
// Copyright tang. All rights reserved.
|
||||
// https://gitee.com/inrgihc/dbswitch
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
//
|
||||
// Author: tang (inrgihc@126.com)
|
||||
// Date : 2020/1/2
|
||||
// Location: beijing , china
|
||||
/////////////////////////////////////////////////////////////
|
||||
package com.gitee.dbswitch.product.greenplum;
|
||||
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresTableCopyWriteProvider;
|
||||
import com.gitee.dbswitch.provider.ProductFactoryProvider;
|
||||
|
||||
|
||||
public class GreenPlumTableCopyWriteProvider extends PostgresTableCopyWriteProvider {
|
||||
|
||||
public GreenPlumTableCopyWriteProvider(ProductFactoryProvider factoryProvider) {
|
||||
super(factoryProvider);
|
||||
}
|
||||
}
|
@@ -0,0 +1,56 @@
|
||||
// Copyright tang. All rights reserved.
|
||||
// https://gitee.com/inrgihc/dbswitch
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
//
|
||||
// Author: tang (inrgihc@126.com)
|
||||
// Date : 2020/1/2
|
||||
// Location: beijing , china
|
||||
/////////////////////////////////////////////////////////////
|
||||
package com.gitee.dbswitch.product.greenplum;
|
||||
|
||||
import com.gitee.dbswitch.annotation.Product;
|
||||
import com.gitee.dbswitch.common.type.ProductTypeEnum;
|
||||
import com.gitee.dbswitch.features.ProductFeatures;
|
||||
import com.gitee.dbswitch.provider.AbstractFactoryProvider;
|
||||
import com.gitee.dbswitch.provider.manage.TableManageProvider;
|
||||
import com.gitee.dbswitch.provider.meta.MetadataProvider;
|
||||
import com.gitee.dbswitch.provider.sync.AutoCastTableDataSynchronizeProvider;
|
||||
import com.gitee.dbswitch.provider.sync.TableDataSynchronizeProvider;
|
||||
import com.gitee.dbswitch.provider.write.AutoCastTableDataWriteProvider;
|
||||
import com.gitee.dbswitch.provider.write.TableDataWriteProvider;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@Product(ProductTypeEnum.GREENPLUM)
|
||||
public class GreenplumFactoryProvider extends AbstractFactoryProvider {
|
||||
|
||||
public GreenplumFactoryProvider(DataSource dataSource) {
|
||||
super(dataSource);
|
||||
}
|
||||
|
||||
public ProductFeatures getProductFeatures() {
|
||||
return new GreenplumFeatures();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetadataProvider createMetadataQueryProvider() {
|
||||
return new GreenplumMetadataQueryProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableManageProvider createTableManageProvider() {
|
||||
return new GreenplumTableManageProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataWriteProvider createTableDataWriteProvider(boolean useInsert) {
|
||||
return useInsert
|
||||
? new AutoCastTableDataWriteProvider(this)
|
||||
: new GreenPlumTableCopyWriteProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataSynchronizeProvider createTableDataSynchronizeProvider() {
|
||||
return new AutoCastTableDataSynchronizeProvider(this);
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
// Copyright tang. All rights reserved.
|
||||
// https://gitee.com/inrgihc/dbswitch
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
//
|
||||
// Author: tang (inrgihc@126.com)
|
||||
// Date : 2020/1/2
|
||||
// Location: beijing , china
|
||||
/////////////////////////////////////////////////////////////
|
||||
package com.gitee.dbswitch.product.greenplum;
|
||||
|
||||
import com.gitee.dbswitch.features.ProductFeatures;
|
||||
|
||||
public class GreenplumFeatures implements ProductFeatures {
|
||||
|
||||
}
|
@@ -0,0 +1,42 @@
|
||||
// Copyright tang. All rights reserved.
|
||||
// https://gitee.com/inrgihc/dbswitch
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
//
|
||||
// Author: tang (inrgihc@126.com)
|
||||
// Date : 2020/1/2
|
||||
// Location: beijing , china
|
||||
/////////////////////////////////////////////////////////////
|
||||
package com.gitee.dbswitch.product.greenplum;
|
||||
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresMetadataQueryProvider;
|
||||
import com.gitee.dbswitch.provider.ProductFactoryProvider;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class GreenplumMetadataQueryProvider extends PostgresMetadataQueryProvider {
|
||||
|
||||
|
||||
public GreenplumMetadataQueryProvider(ProductFactoryProvider factoryProvider) {
|
||||
super(factoryProvider);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void postAppendCreateTableSql(StringBuilder builder, String tblComment, List<String> primaryKeys,
|
||||
Map<String, String> tblProperties) {
|
||||
// 有主键就优先使用主键作为分布键。
|
||||
if (Objects.nonNull(primaryKeys) && !primaryKeys.isEmpty()) {
|
||||
getPkOrDkAsString(builder, primaryKeys);
|
||||
log.info("using primary key as distributed key");
|
||||
}
|
||||
}
|
||||
|
||||
private void getPkOrDkAsString(StringBuilder builder, List<String> primaryKeys) {
|
||||
String pk = getPrimaryKeyAsString(primaryKeys);
|
||||
builder.append("\n DISTRIBUTED BY (").append(pk).append(")");
|
||||
}
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
// Copyright tang. All rights reserved.
|
||||
// https://gitee.com/inrgihc/dbswitch
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
//
|
||||
// Author: tang (inrgihc@126.com)
|
||||
// Date : 2020/1/2
|
||||
// Location: beijing , china
|
||||
/////////////////////////////////////////////////////////////
|
||||
package com.gitee.dbswitch.product.greenplum;
|
||||
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresTableManageProvider;
|
||||
import com.gitee.dbswitch.provider.ProductFactoryProvider;
|
||||
import com.gitee.dbswitch.provider.manage.DefaultTableManageProvider;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class GreenplumTableManageProvider extends PostgresTableManageProvider {
|
||||
|
||||
public GreenplumTableManageProvider(ProductFactoryProvider factoryProvider) {
|
||||
super(factoryProvider);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1 @@
|
||||
com.gitee.dbswitch.product.greenplum.GreenplumFactoryProvider
|
Reference in New Issue
Block a user