mirror of
https://gitee.com/dromara/dbswitch.git
synced 2025-09-09 13:39:10 +00:00
实现issue:I7DCQQ支持opengauss类型
This commit is contained in:
34
dbswitch-product/dbswitch-product-opengauss/pom.xml
Normal file
34
dbswitch-product/dbswitch-product-opengauss/pom.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?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.8.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>dbswitch-product-openguass</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,54 @@
|
||||
// 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.openguass;
|
||||
|
||||
import com.gitee.dbswitch.annotation.Product;
|
||||
import com.gitee.dbswitch.common.type.ProductTypeEnum;
|
||||
import com.gitee.dbswitch.features.ProductFeatures;
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresTableInsertWriterProvider;
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresTableSynchronizer;
|
||||
import com.gitee.dbswitch.provider.AbstractFactoryProvider;
|
||||
import com.gitee.dbswitch.provider.meta.MetadataProvider;
|
||||
import com.gitee.dbswitch.provider.operate.TableOperateProvider;
|
||||
import com.gitee.dbswitch.provider.sync.TableDataSynchronizer;
|
||||
import com.gitee.dbswitch.provider.write.TableDataWriteProvider;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
@Product(ProductTypeEnum.OPENGAUSS)
|
||||
public class OpenGaussFactoryProvider extends AbstractFactoryProvider {
|
||||
|
||||
public OpenGaussFactoryProvider(DataSource dataSource) {
|
||||
super(dataSource);
|
||||
}
|
||||
|
||||
public ProductFeatures getProductFeatures() {
|
||||
return new OpenGaussFeatures();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetadataProvider createMetadataQueryProvider() {
|
||||
return new OpenGaussMetadataQueryProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableOperateProvider createTableOperateProvider() {
|
||||
return new OpenGaussTableOperateProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataWriteProvider createTableDataWriteProvider(boolean useInsert) {
|
||||
return new PostgresTableInsertWriterProvider(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataSynchronizer createTableDataSynchronizer() {
|
||||
return new PostgresTableSynchronizer(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.openguass;
|
||||
|
||||
import com.gitee.dbswitch.features.ProductFeatures;
|
||||
|
||||
public class OpenGaussFeatures implements ProductFeatures {
|
||||
|
||||
}
|
@@ -0,0 +1,51 @@
|
||||
// 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.openguass;
|
||||
|
||||
import com.gitee.dbswitch.product.postgresql.PostgresMetadataQueryProvider;
|
||||
import com.gitee.dbswitch.provider.ProductFactoryProvider;
|
||||
import java.sql.Connection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class OpenGaussMetadataQueryProvider extends PostgresMetadataQueryProvider {
|
||||
|
||||
private static Set<String> systemSchemas = new HashSet<>();
|
||||
|
||||
static {
|
||||
systemSchemas.add("blockchain");
|
||||
systemSchemas.add("cstore");
|
||||
systemSchemas.add("db4ai");
|
||||
systemSchemas.add("dbe_perf");
|
||||
systemSchemas.add("dbe_pldebugger");
|
||||
systemSchemas.add("dbe_pldeveloper");
|
||||
systemSchemas.add("dbe_sql_util");
|
||||
systemSchemas.add("information_schema");
|
||||
systemSchemas.add("pg_catalog");
|
||||
systemSchemas.add("pkg_service");
|
||||
systemSchemas.add("snapshot");
|
||||
systemSchemas.add("sqladvisor");
|
||||
}
|
||||
|
||||
public OpenGaussMetadataQueryProvider(ProductFactoryProvider factoryProvider) {
|
||||
super(factoryProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> querySchemaList(Connection connection) {
|
||||
List<String> schemas = super.querySchemaList(connection);
|
||||
return schemas.stream()
|
||||
.filter(s -> !systemSchemas.contains(s))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
// 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.openguass;
|
||||
|
||||
import com.gitee.dbswitch.provider.ProductFactoryProvider;
|
||||
import com.gitee.dbswitch.provider.operate.DefaultTableOperateProvider;
|
||||
|
||||
public class OpenGaussTableOperateProvider extends DefaultTableOperateProvider {
|
||||
|
||||
public OpenGaussTableOperateProvider(ProductFactoryProvider factoryProvider) {
|
||||
super(factoryProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropTable(String schemaName, String tableName) {
|
||||
String sql = String.format("DROP TABLE \"%s\".\"%s\" CASCADE ",
|
||||
schemaName, tableName);
|
||||
this.executeSql(sql);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1 @@
|
||||
com.gitee.dbswitch.product.openguass.OpenGaussFactoryProvider
|
@@ -78,6 +78,11 @@
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- 新增加的数据库产品需要在这里追加依赖-->
|
||||
<dependency>
|
||||
<groupId>com.gitee.dbswitch</groupId>
|
||||
<artifactId>dbswitch-product-openguass</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@@ -25,6 +25,7 @@
|
||||
<module>dbswitch-product-mariadb</module>
|
||||
<module>dbswitch-product-hive</module>
|
||||
<module>dbswitch-product-gbase</module>
|
||||
<module>dbswitch-product-opengauss</module>
|
||||
<module>dbswitch-register-product</module>
|
||||
</modules>
|
||||
|
||||
|
Reference in New Issue
Block a user