实现issue:I7DCQQ支持opengauss类型

This commit is contained in:
inrgihc
2023-07-26 22:54:51 +08:00
parent 6cb3662b5c
commit e7fe5c4a73
11 changed files with 207 additions and 2 deletions

View 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>

View File

@@ -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);
}
}

View File

@@ -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 {
}

View File

@@ -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());
}
}

View File

@@ -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);
}
}

View File

@@ -0,0 +1 @@
com.gitee.dbswitch.product.openguass.OpenGaussFactoryProvider

View File

@@ -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>

View File

@@ -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>