diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md index 8e06e54d4dd05..b0b663ea80aaa 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md @@ -329,6 +329,3 @@ ShardingSphere 的单元测试仅使用 Maven 模块 `io.github.linghengqian:hiv 9. 由于 https://github.com/apache/doris/issues/9426 的影响,当通过 Shardinghere JDBC 连接至 Apache Doris FE, 用户需自行提供 `apache/doris` 集成模块相关的 GraalVM Reachability Metadata。 - -10. 由于 https://github.com/prestodb/presto/issues/23226 的影响,当通过 Shardinghere JDBC 连接至 Presto Server, -用户需自行提供 `com.facebook.presto:presto-jdbc` 和 `prestodb/presto` 集成模块相关的 GraalVM Reachability Metadata。 diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md index aa13f1bbf4d76..e7ec4d48274c6 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md @@ -343,6 +343,3 @@ the Oracle JDBC Driver corresponding to the `com.oracle.database.jdbc:ojdbc8` Ma 9. Due to https://github.com/apache/doris/issues/9426, when connecting to Apache Doris FE via Shardinghere JDBC, users need to provide GraalVM Reachability Metadata related to the `apache/doris` integration module. - -10. Due to https://github.com/prestodb/presto/issues/23226, when connecting to Presto Server via Shardinghere JDBC, - users need to provide GraalVM Reachability Metadata related to the `com.facebook.presto:presto-jdbc` and `prestodb/presto` integration module. diff --git a/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java index fc6afd2a3f837..a8fa29a582cc0 100644 --- a/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java +++ b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java @@ -21,8 +21,10 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.IdentifierPatternType; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption; +import org.apache.shardingsphere.infra.database.presto.metadata.database.option.PrestoDataTypeOption; /** * Database meta data of Presto. @@ -49,6 +51,11 @@ public DialectSchemaOption getSchemaOption() { return new DefaultSchemaOption(false, "default"); } + @Override + public DialectDataTypeOption getDataTypeOption() { + return new PrestoDataTypeOption(); + } + @Override public String getDatabaseType() { return "Presto"; diff --git a/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/option/PrestoDataTypeOption.java b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/option/PrestoDataTypeOption.java new file mode 100644 index 0000000000000..bdd7898f621f2 --- /dev/null +++ b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/option/PrestoDataTypeOption.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.infra.database.presto.metadata.database.option; + +import com.cedarsoftware.util.CaseInsensitiveMap; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DefaultDataTypeOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; + +import java.sql.Types; +import java.util.Map; +import java.util.Optional; + +/** + * Data type option for Presto. + */ +public final class PrestoDataTypeOption implements DialectDataTypeOption { + + private static final Map EXTRA_DATA_TYPES; + + private final DialectDataTypeOption delegate = new DefaultDataTypeOption(); + + static { + EXTRA_DATA_TYPES = setUpExtraDataTypes(); + } + + /** + * TODO For prestodb/presto 0.292, + * the `DATA_TYPE` column of the `INFORMATION_SCHEMA.COLUMNS` table of `Memory` catalog only records strings like `varchar(50)`, + * which is expected to have potential optimizations on ShardingSphere side. + * + * @return Extra data types + */ + private static Map setUpExtraDataTypes() { + Map result = new CaseInsensitiveMap<>(); + result.put("varchar(50)", Types.VARCHAR); + result.put("varchar(100)", Types.VARCHAR); + return result; + } + + @Override + public Map getExtraDataTypes() { + return EXTRA_DATA_TYPES; + } + + @Override + public Optional> findExtraSQLTypeClass(final int dataType, final boolean unsigned) { + return Optional.empty(); + } + + @Override + public boolean isIntegerDataType(final int sqlType) { + return delegate.isIntegerDataType(sqlType); + } + + @Override + public boolean isStringDataType(final int sqlType) { + return delegate.isStringDataType(sqlType); + } + + @Override + public boolean isBinaryDataType(final int sqlType) { + return delegate.isBinaryDataType(sqlType); + } +} diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/proxy-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/proxy-config.json new file mode 100644 index 0000000000000..2fcd0d1191f5d --- /dev/null +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/proxy-config.json @@ -0,0 +1,6 @@ +[ + { + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.guava.reflect.Reflection"}, + "interfaces":["java.lang.reflect.TypeVariable"] + } +] diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/reflect-config.json new file mode 100644 index 0000000000000..a9eb685bc0425 --- /dev/null +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/reflect-config.json @@ -0,0 +1,182 @@ +[ +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.client.StatementClientV1"}, + "name":"com.facebook.presto.jdbc.internal.client.ClientTypeSignature", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.util.List","java.util.List","java.util.List"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.ClientTypeSignature", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.deser.DefaultDeserializationContext"}, + "name":"com.facebook.presto.jdbc.internal.client.ClientTypeSignatureParameter$ClientTypeSignatureParameterDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.client.StatementClientV1"}, + "name":"com.facebook.presto.jdbc.internal.client.Column", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","com.facebook.presto.jdbc.internal.client.ClientTypeSignature"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.Column", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.ErrorLocation", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.FailureInfo", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "allPublicConstructors": true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.QueryData", + "queryAllDeclaredMethods":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.QueryError", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "allPublicConstructors": true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.QueryResults", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["java.lang.String","java.net.URI","java.net.URI","java.net.URI","java.util.List","java.util.List","java.util.List","com.facebook.presto.jdbc.internal.client.StatementStats","com.facebook.presto.jdbc.internal.client.QueryError","java.util.List","java.lang.String","java.lang.Long"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.QueryStatusInfo", + "queryAllDeclaredMethods":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.PrestoPreparedStatement"}, + "name":"com.facebook.presto.jdbc.internal.client.StageStats", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","boolean","int","int","int","int","int","long","long","long","long","java.util.List"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.PrestoResultSet$ResultsPageIterator"}, + "name":"com.facebook.presto.jdbc.internal.client.StageStats", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","boolean","int","int","int","int","int","long","long","long","long","java.util.List"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.PrestoStatement"}, + "name":"com.facebook.presto.jdbc.internal.client.StageStats", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","boolean","int","int","int","int","int","long","long","long","long","java.util.List"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.StageStats", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.client.StatementStats", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["java.lang.String","boolean","boolean","boolean","int","int","int","int","int","long","long","long","long","long","long","long","long","long","long","long","com.facebook.presto.jdbc.internal.client.StageStats","com.facebook.presto.jdbc.internal.common.RuntimeStats"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.deser.std.MapDeserializer"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeMetric", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["java.lang.String","com.facebook.presto.jdbc.internal.common.RuntimeUnit","long","long","long","long"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeStats", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.introspect.AnnotatedConstructor"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeStats", + "methods":[{"name":"","parameterTypes":["java.util.Map"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.deser.std.MapDeserializer"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeUnit", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.introspect.JacksonAnnotationIntrospector"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeUnit", + "allDeclaredFields":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.util.ClassUtil"}, + "name":"com.facebook.presto.jdbc.internal.common.RuntimeUnit", + "allDeclaredFields":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectMapper"}, + "name":"com.facebook.presto.jdbc.internal.common.type.ParameterKind", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.introspect.AnnotatedMethod"}, + "name":"com.facebook.presto.jdbc.internal.common.type.ParameterKind", + "methods":[{"name":"fromJsonValue","parameterTypes":["java.lang.String"] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.guava.reflect.Types$TypeVariableInvocationHandler"}, + "name":"com.facebook.presto.jdbc.internal.guava.reflect.Types$TypeVariableImpl", + "queryAllPublicMethods":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ext.Java7Handlers"}, + "name":"com.facebook.presto.jdbc.internal.jackson.databind.ext.Java7HandlersImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ext.Java7Support"}, + "name":"com.facebook.presto.jdbc.internal.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.com.facebook.airlift.json.ObjectMapperProvider"}, + "name":"com.facebook.presto.jdbc.internal.joda.time.DateTime" +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.spi.PrestoWarning", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.jackson.databind.ObjectReader"}, + "name":"com.facebook.presto.jdbc.internal.spi.WarningCode", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +} +] diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/resource-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/resource-config.json new file mode 100644 index 0000000000000..f6e1450c8a56c --- /dev/null +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/com.facebook.presto/presto-jdbc/0.292/resource-config.json @@ -0,0 +1,14 @@ +{ + "resources":{ + "includes":[{ + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.joda.time.tz.ZoneInfoProvider"}, + "pattern":".*com/facebook/presto/jdbc/internal/joda/time/tz/data/.+" + }, { + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.common.type.TimeZoneKey"}, + "pattern":"\\Qcom/facebook/presto/jdbc/internal/common/type/zone-index.properties\\E" + }, { + "condition":{"typeReachable":"com.facebook.presto.jdbc.internal.joda.time.tz.ZoneInfoProvider"}, + "pattern":"\\Qcom/facebook/presto/jdbc/internal/joda/time/tz/data/ZoneInfoMap\\E" + }]}, + "bundles":[] +} diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/resource-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/resource-config.json deleted file mode 100644 index 2eafff6c810a8..0000000000000 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/resource-config.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "resources":{ - "includes":[{ - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/seata/io.seata.config.ConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, - "pattern":"\\QMETA-INF/seata/io.seata.core.auth.AuthSigner\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, - "pattern":"\\QMETA-INF/seata/io.seata.core.context.ContextCore\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, - "pattern":"\\QMETA-INF/seata/io.seata.core.model.ResourceManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/seata/io.seata.core.serializer.Serializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, - "pattern":"\\QMETA-INF/seata/io.seata.discovery.registry.RegistryProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, - "pattern":"\\QMETA-INF/seata/io.seata.rm.datasource.exec.InsertExecutor\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, - "pattern":"\\QMETA-INF/seata/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.config.ConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.config.ExtConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.auth.AuthSigner\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.context.ContextCore\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.model.ResourceManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.tm.TransactionManagerHolder$SingletonHolder"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.model.TransactionManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.AbstractNettyRemoting"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.rpc.hook.RpcHook\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.core.serializer.Serializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.discovery.registry.RegistryProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultRMHandler"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.AbstractRMHandler\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.exec.InsertExecutor\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoExecutorHolderFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoExecutorHolder\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogManagerFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoLogManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogParserFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoLogParser\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.sqlparser.EscapeHandlerFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.EscapeHandler\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.SQLVisitorFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.SQLRecognizerFactory\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.struct.TableMetaCacheFactory"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.struct.TableMetaCache\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.util.JdbcUtils"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.util.DbTypeParser\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/services/io.seata.config.ConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, - "pattern":"\\QMETA-INF/services/io.seata.core.auth.AuthSigner\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, - "pattern":"\\QMETA-INF/services/io.seata.core.context.ContextCore\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, - "pattern":"\\QMETA-INF/services/io.seata.core.model.ResourceManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/services/io.seata.core.serializer.Serializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, - "pattern":"\\QMETA-INF/services/io.seata.discovery.registry.RegistryProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, - "pattern":"\\QMETA-INF/services/io.seata.rm.datasource.exec.InsertExecutor\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, - "pattern":"\\QMETA-INF/services/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.config.ConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.config.ExtConfigurationProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.auth.AuthSigner\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.context.ContextCore\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.model.ResourceManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.tm.TransactionManagerHolder$SingletonHolder"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.model.TransactionManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.AbstractNettyRemoting"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.rpc.hook.RpcHook\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.core.serializer.Serializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.discovery.registry.RegistryProvider\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.DefaultRMHandler"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.AbstractRMHandler\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.exec.InsertExecutor\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoExecutorHolderFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoExecutorHolder\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogManagerFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoLogManager\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogParserFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoLogParser\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.sqlparser.EscapeHandlerFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.EscapeHandler\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.SQLVisitorFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.SQLRecognizerFactory\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.struct.TableMetaCacheFactory"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.struct.TableMetaCache\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.rm.datasource.util.JdbcUtils"}, - "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.util.DbTypeParser\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.sqlparser.druid.DefaultDruidLoader"}, - "pattern":"\\Qlib/sqlparser/druid.jar\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, - "pattern":"\\QMETA-INF/seata/org.apache.seata.config.file.FileConfig\\E" - }, { - "condition":{"typeReachable":"org.apache.seata.config.FileConfiguration"}, - "pattern":"\\Qregistry\\E" - }]}, - "bundles":[] -} diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/proxy-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/proxy-config.json similarity index 100% rename from infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/proxy-config.json rename to infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/proxy-config.json diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/reflect-config.json similarity index 100% rename from infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.2.0/reflect-config.json rename to infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/reflect-config.json diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/resource-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/resource-config.json new file mode 100644 index 0000000000000..014876194233e --- /dev/null +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.seata/seata-all/2.3.0/resource-config.json @@ -0,0 +1,182 @@ +{ + "resources":{ + "includes":[{ + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/seata/io.seata.config.ConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, + "pattern":"\\QMETA-INF/seata/io.seata.core.auth.AuthSigner\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, + "pattern":"\\QMETA-INF/seata/io.seata.core.context.ContextCore\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, + "pattern":"\\QMETA-INF/seata/io.seata.core.model.ResourceManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/seata/io.seata.core.serializer.Serializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, + "pattern":"\\QMETA-INF/seata/io.seata.discovery.registry.RegistryProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, + "pattern":"\\QMETA-INF/seata/io.seata.rm.datasource.exec.InsertExecutor\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, + "pattern":"\\QMETA-INF/seata/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.config.ConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.config.ExtConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.auth.AuthSigner\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.context.ContextCore\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.model.ResourceManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.tm.TransactionManagerHolder$SingletonHolder"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.model.TransactionManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.AbstractNettyRemoting"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.rpc.hook.RpcHook\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.core.serializer.Serializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.discovery.registry.RegistryProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultRMHandler"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.AbstractRMHandler\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.exec.InsertExecutor\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoExecutorHolderFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoExecutorHolder\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogManagerFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoLogManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogParserFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.UndoLogParser\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.sqlparser.EscapeHandlerFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.EscapeHandler\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.SQLVisitorFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.SQLRecognizerFactory\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.struct.TableMetaCacheFactory"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.struct.TableMetaCache\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.util.JdbcUtils"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.sqlparser.util.DbTypeParser\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/services/io.seata.config.ConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, + "pattern":"\\QMETA-INF/services/io.seata.core.auth.AuthSigner\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, + "pattern":"\\QMETA-INF/services/io.seata.core.context.ContextCore\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, + "pattern":"\\QMETA-INF/services/io.seata.core.model.ResourceManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/services/io.seata.core.serializer.Serializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, + "pattern":"\\QMETA-INF/services/io.seata.discovery.registry.RegistryProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, + "pattern":"\\QMETA-INF/services/io.seata.rm.datasource.exec.InsertExecutor\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, + "pattern":"\\QMETA-INF/services/io.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.config.ConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.ConfigurationFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.config.ExtConfigurationProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.TmNettyRemotingClient"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.auth.AuthSigner\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.context.ContextCoreLoader$ContextCoreHolder"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.context.ContextCore\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultResourceManager"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.model.ResourceManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.tm.TransactionManagerHolder$SingletonHolder"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.model.TransactionManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.core.rpc.netty.AbstractNettyRemoting"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.rpc.hook.RpcHook\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader$InnerEnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.core.serializer.Serializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.discovery.registry.RegistryFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.discovery.registry.RegistryProvider\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.DefaultRMHandler"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.AbstractRMHandler\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.PreparedStatementProxy"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.exec.InsertExecutor\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoExecutorHolderFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoExecutorHolder\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogManagerFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoLogManager\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.UndoLogParserFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.UndoLogParser\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.undo.parser.JacksonUndoLogParser"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.rm.datasource.undo.parser.spi.JacksonSerializer\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.sqlparser.EscapeHandlerFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.EscapeHandler\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.SQLVisitorFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.SQLRecognizerFactory\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.druid.SQLOperateRecognizerHolder\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.sql.struct.TableMetaCacheFactory"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.struct.TableMetaCache\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.rm.datasource.util.JdbcUtils"}, + "pattern":"\\QMETA-INF/services/org.apache.seata.sqlparser.util.DbTypeParser\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.sqlparser.druid.DefaultDruidLoader"}, + "pattern":"\\Qlib/sqlparser/druid.jar\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.common.loader.EnhancedServiceLoader"}, + "pattern":"\\QMETA-INF/seata/org.apache.seata.config.file.FileConfig\\E" + }, { + "condition":{"typeReachable":"org.apache.seata.config.FileConfiguration"}, + "pattern":"\\Qregistry\\E" + }]}, + "bundles":[] +} diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json index 74ffdfdf60029..949f4c51b3065 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reflect-config.json @@ -111,6 +111,10 @@ "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.postgresql.metadata.data.loader.PostgreSQLMetaDataLoader"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.presto.metadata.data.loader.PrestoMetaDataLoader"}, + "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" +}, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.sqlserver.metadata.data.loader.SQLServerMetaDataLoader"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" @@ -127,10 +131,6 @@ "condition":{"typeReachable":"org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" }, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.mode.metadata.persist.metadata.service.DatabaseMetaDataPersistService"}, - "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" -}, { "condition":{"typeReachable":"org.apache.shardingsphere.mode.repository.standalone.jdbc.JDBCRepository"}, "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" @@ -1716,6 +1716,18 @@ "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"}, "name":"org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType" }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader"}, + "name":"org.apache.shardingsphere.infra.database.presto.metadata.data.loader.PrestoMetaDataLoader" +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry"}, + "name":"org.apache.shardingsphere.infra.database.presto.metadata.database.PrestoDatabaseMetaData" +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory"}, + "name":"org.apache.shardingsphere.infra.database.presto.type.PrestoDatabaseType" +}, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry"}, "name":"org.apache.shardingsphere.infra.database.sql92.metadata.database.SQL92DatabaseMetaData" @@ -3705,6 +3717,26 @@ "name":"org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type.PostgreSQLDMLStatementVisitor", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.presto.parser.PrestoLexer", + "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.CharStream"] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.presto.parser.PrestoParser", + "methods":[{"name":"","parameterTypes":["org.antlr.v4.runtime.TokenStream"] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.core.database.visitor.SQLStatementVisitorFactory"}, + "name":"org.apache.shardingsphere.sql.parser.presto.visitor.statement.PrestoStatementVisitorFacade", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.presto.visitor.statement.type.PrestoDDLStatementVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.core.database.visitor.SQLStatementVisitorFactory"}, "name":"org.apache.shardingsphere.sql.parser.sql92.visitor.statement.SQL92StatementVisitorFacade", @@ -3865,6 +3897,16 @@ "name":"org.apache.shardingsphere.sql.parser.statement.postgresql.dml.PostgreSQLSelectStatement", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, + "name":"org.apache.shardingsphere.sql.parser.statement.presto.ddl.PrestoDropTableStatement", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement"}, + "name":"org.apache.shardingsphere.sql.parser.statement.presto.dml.PrestoInsertStatement", + "methods":[{"name":"","parameterTypes":[] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement"}, "name":"org.apache.shardingsphere.sql.parser.statement.sqlserver.ddl.SQLServerDropTableStatement", diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json index 28985c3a39c94..b1bcc2d98e3a6 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/resource-config.json @@ -2037,6 +2037,9 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.url.classpath.ClassPathURLLoader"}, "pattern":"\\Qtest-native/yaml/jdbc/databases/postgresql.yaml\\E" + }, { + "condition":{"typeReachable":"org.apache.shardingsphere.infra.url.classpath.ClassPathURLLoader"}, + "pattern":"\\Qtest-native/yaml/jdbc/databases/presto.yaml\\E" }, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.url.classpath.ClassPathURLLoader"}, "pattern":"\\Qtest-native/yaml/jdbc/databases/sqlserver.yaml\\E" @@ -2088,9 +2091,6 @@ }, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.hive.metadata.data.loader.HiveMetaDataLoader"}, "pattern":"\\Qyarn-site.xml\\E" - }, { - "condition":{"typeReachable":"org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource"}, - "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt74b/nfkc.nrm\\E" }, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.database.hive.metadata.data.loader.HiveMetaDataLoader"}, "pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/Encodings.properties\\E" diff --git a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json index 24da477d417b2..fc0d3c569df85 100644 --- a/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json +++ b/infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/shardingsphere-infra-reachability-metadata/reflect-config.json @@ -203,6 +203,11 @@ "name":"java.net.SocketException", "methods":[{"name":"","parameterTypes":["java.lang.String"] }] }, +{ + "condition":{"typeReachable":"java.net.SocketTimeoutException"}, + "name":"java.net.SocketTimeoutException", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, { "condition":{"typeReachable":"org.apache.shardingsphere.infra.util.yaml.YamlEngine"}, "name":"org.apache.shardingsphere.encrypt.yaml.config.rule.YamlEncryptColumnItemRuleConfiguration", @@ -457,6 +462,21 @@ "name":"org.apache.shardingsphere.sqlfederation.compiler.sql.function.postgresql.impl.PostgreSQLSystemFunction", "allPublicMethods": true }, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.presto.visitor.statement.type.PrestoDMLStatementVisitor"}, + "name":"org.apache.shardingsphere.sql.parser.presto.visitor.statement.type.PrestoDMLStatementVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.statement.presto.dml.PrestoSelectStatement"}, + "name":"org.apache.shardingsphere.sql.parser.statement.presto.dml.PrestoSelectStatement", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.sql.parser.statement.presto.dml.PrestoDeleteStatement"}, + "name":"org.apache.shardingsphere.sql.parser.statement.presto.dml.PrestoDeleteStatement", + "methods":[{"name":"","parameterTypes":[] }] +}, { "condition":{"typeReachable":"javax.security.auth.login.Configuration"}, "name":"sun.security.provider.ConfigFile", diff --git a/pom.xml b/pom.xml index 73a12dc390e15..21d7a93a28d4b 100644 --- a/pom.xml +++ b/pom.xml @@ -133,7 +133,7 @@ 4.0.1 1.7.0 3.3.6 - 0.288.1 + 0.292 5.0.6.java8 4.0.3 diff --git a/test/native/pom.xml b/test/native/pom.xml index 9c0db56abadf6..4406121230e5d 100644 --- a/test/native/pom.xml +++ b/test/native/pom.xml @@ -181,6 +181,12 @@ ${project.version} test + + org.apache.shardingsphere + shardingsphere-parser-sql-presto + ${project.version} + test + org.apache.shardingsphere @@ -327,6 +333,11 @@ jaybird test + + com.facebook.presto + presto-jdbc + test + org.testcontainers junit-jupiter diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java index 52c3047af1c67..fd391a4166c9a 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/commons/TestShardingService.java @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.LongStream; @@ -105,8 +106,8 @@ private void extracted() throws SQLException { equalTo(IntStream.range(1, 11).mapToObj(i -> "13800000001").collect(Collectors.toList()))); assertThat(orderItems.stream().map(OrderItem::getStatus).collect(Collectors.toList()), equalTo(IntStream.range(1, 11).mapToObj(i -> "INSERT_TEST").collect(Collectors.toList()))); - assertThat(addressRepository.selectAll(), - equalTo(LongStream.range(1L, 11L).mapToObj(each -> new Address(each, "address_test_" + each)).collect(Collectors.toList()))); + assertThat(new HashSet<>(addressRepository.selectAll()), + equalTo(LongStream.range(1L, 11L).mapToObj(each -> new Address(each, "address_test_" + each)).collect(Collectors.toSet()))); } /** @@ -126,6 +127,22 @@ public void processSuccessInHive() throws SQLException { assertThat(addressRepository.selectAll(), equalTo(Collections.emptyList())); } + /** + * Process success in Presto Iceberg Connector. + * TODO ShardingSphere's Presto integration has a bug in transaction support. + * Can't execute {@code orderItemRepository.assertRollbackWithTransactions();} here. + * + * @throws SQLException SQL exception + */ + public void processSuccessInPresto() throws SQLException { + final Collection orderIds = insertData(Statement.RETURN_GENERATED_KEYS); + extracted(); + deleteData(orderIds); + assertThat(orderRepository.selectAll(), equalTo(Collections.emptyList())); + assertThat(orderItemRepository.selectAll(), equalTo(Collections.emptyList())); + assertThat(addressRepository.selectAll(), equalTo(Collections.emptyList())); + } + /** * Insert data. * diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/PrestoTest.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/PrestoTest.java new file mode 100644 index 0000000000000..48ed8a8dc1486 --- /dev/null +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/databases/PrestoTest.java @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.test.natived.jdbc.databases; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; +import org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection; +import org.apache.shardingsphere.infra.database.core.DefaultDatabase; +import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit; +import org.apache.shardingsphere.mode.manager.ContextManager; +import org.apache.shardingsphere.test.natived.commons.TestShardingService; +import org.awaitility.Awaitility; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledInNativeImage; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.MountableFile; + +import javax.sql.DataSource; +import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.time.Duration; +import java.util.stream.Stream; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; + +/** + * Unable to use `org.testcontainers:presto:1.21.0` under GraalVM Native Image. + * Background comes from testcontainers/testcontainers-java#8657. + */ +@SuppressWarnings({"resource", "SqlNoDataSourceInspection"}) +@EnabledInNativeImage +@Testcontainers +public class PrestoTest { + + private final String systemPropKeyPrefix = "fixture.test-native.yaml.database.presto."; + + private String baseJdbcUrl; + + @Container + private final GenericContainer container = new GenericContainer<>("prestodb/presto:0.292") + .withExposedPorts(8080) + .withCopyFileToContainer( + MountableFile.forHostPath(Paths.get("src/test/resources/test-native/properties/presto-iceberg.properties").toAbsolutePath()), + "/opt/presto-server/etc/catalog/iceberg.properties") + .waitingFor(Wait.forHttp("/v1/info/state").forPort(8080).forResponsePredicate("\"ACTIVE\""::equals)); + + private DataSource logicDataSource; + + @BeforeEach + void beforeEach() { + assertThat(System.getProperty(systemPropKeyPrefix + "ds0.jdbc-url"), is(nullValue())); + assertThat(System.getProperty(systemPropKeyPrefix + "ds1.jdbc-url"), is(nullValue())); + assertThat(System.getProperty(systemPropKeyPrefix + "ds2.jdbc-url"), is(nullValue())); + } + + @AfterEach + void afterEach() throws SQLException { + try (Connection connection = logicDataSource.getConnection()) { + ContextManager contextManager = connection.unwrap(ShardingSphereConnection.class).getContextManager(); + for (StorageUnit each : contextManager.getStorageUnits(DefaultDatabase.LOGIC_NAME).values()) { + each.getDataSource().unwrap(HikariDataSource.class).close(); + } + contextManager.close(); + } + System.clearProperty(systemPropKeyPrefix + "ds0.jdbc-url"); + System.clearProperty(systemPropKeyPrefix + "ds1.jdbc-url"); + System.clearProperty(systemPropKeyPrefix + "ds2.jdbc-url"); + } + + @Test + void assertShardingInLocalTransactions() throws SQLException { + baseJdbcUrl = "jdbc:presto://localhost:" + container.getMappedPort(8080) + "/iceberg"; + logicDataSource = createDataSource(); + TestShardingService testShardingService = new TestShardingService(logicDataSource); + testShardingService.processSuccessInPresto(); + testShardingService.cleanEnvironment(); + } + + private DataSource createDataSource() throws SQLException { + Awaitility.await().atMost(Duration.ofMinutes(1L)).ignoreExceptions().until(() -> { + DriverManager.getConnection(baseJdbcUrl, "test", null).close(); + return true; + }); + try ( + Connection con = DriverManager.getConnection(baseJdbcUrl, "test", null); + Statement stmt = con.createStatement()) { + stmt.execute("CREATE SCHEMA iceberg.demo_ds_0"); + stmt.execute("CREATE SCHEMA iceberg.demo_ds_1"); + stmt.execute("CREATE SCHEMA iceberg.demo_ds_2"); + } + Stream.of("demo_ds_0", "demo_ds_1", "demo_ds_2").forEach(this::initSchema); + HikariConfig config = new HikariConfig(); + config.setDriverClassName("org.apache.shardingsphere.driver.ShardingSphereDriver"); + config.setJdbcUrl("jdbc:shardingsphere:classpath:test-native/yaml/jdbc/databases/presto.yaml?placeholder-type=system_props"); + System.setProperty(systemPropKeyPrefix + "ds0.jdbc-url", baseJdbcUrl + "/demo_ds_0"); + System.setProperty(systemPropKeyPrefix + "ds1.jdbc-url", baseJdbcUrl + "/demo_ds_1"); + System.setProperty(systemPropKeyPrefix + "ds2.jdbc-url", baseJdbcUrl + "/demo_ds_2"); + return new HikariDataSource(config); + } + + /** + * TODO `shardingsphere-parser-sql-presto` module does not support `create table` and `truncate table` statements yet. + * Presto Iceberg Connector does not support AUTO_INCREMENT columns. + * Presto Iceberg Connector does not support Primary Key constraints. + * + * @param schemaName schema name + * @throws RuntimeException Runtime exception + */ + private void initSchema(final String schemaName) { + try ( + Connection con = DriverManager.getConnection(baseJdbcUrl + "/" + schemaName, "test", null); + Statement stmt = con.createStatement()) { + stmt.execute("CREATE TABLE IF NOT EXISTS t_order (\n" + + " order_id BIGINT NOT NULL,\n" + + " order_type INTEGER,\n" + + " user_id INTEGER NOT NULL,\n" + + " address_id BIGINT NOT NULL,\n" + + " status VARCHAR(50)\n" + + ")"); + stmt.execute("CREATE TABLE IF NOT EXISTS t_order_item (\n" + + " order_item_id BIGINT NOT NULL,\n" + + " order_id BIGINT NOT NULL,\n" + + " user_id INT NOT NULL,\n" + + " phone VARCHAR(50),\n" + + " status VARCHAR(50)\n" + + ")"); + stmt.execute("CREATE TABLE IF NOT EXISTS t_address (\n" + + " address_id BIGINT NOT NULL,\n" + + " address_name VARCHAR(100) NOT NULL\n" + + ")"); + stmt.execute("truncate table t_order"); + stmt.execute("truncate table t_order_item"); + stmt.execute("truncate table t_address"); + } catch (final SQLException ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/reflect-config.json b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/reflect-config.json index 996859280ee63..345ae2c2a8b98 100644 --- a/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/reflect-config.json +++ b/test/native/src/test/resources/META-INF/native-image/shardingsphere-test-native-test-metadata/reflect-config.json @@ -9,14 +9,6 @@ "name":"org.apache.shardingsphere.test.natived.commons.algorithm.TestQueryAssistedShardingEncryptAlgorithm", "methods":[{"name":"","parameterTypes":[] }] }, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.databases.MySQLTest"}, - "name":"org.apache.shardingsphere.test.natived.proxy.databases.MySQLTest", - "allDeclaredConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredFields": true -}, { "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.transactions.xa.NarayanaTest"}, "name":"org.apache.shardingsphere.test.natived.jdbc.transactions.xa.NarayanaTest", @@ -33,14 +25,6 @@ "allPublicMethods": true, "allDeclaredFields": true }, -{ - "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.databases.PostgresTest"}, - "name":"org.apache.shardingsphere.test.natived.proxy.databases.PostgresTest", - "allDeclaredConstructors": true, - "allDeclaredMethods": true, - "allPublicMethods": true, - "allDeclaredFields": true -}, { "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.modes.cluster.ZookeeperTest"}, "name":"org.apache.shardingsphere.test.natived.jdbc.modes.cluster.ZookeeperTest", @@ -178,16 +162,40 @@ "allPublicMethods": true }, { - "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.transactions.base.SeataTest"}, - "name":"org.apache.shardingsphere.test.natived.proxy.transactions.base.SeataTest", + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTest"}, + "name":"org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTest", "allDeclaredFields": true, "allDeclaredConstructors": true, "allDeclaredMethods": true, "allPublicMethods": true }, { - "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTest"}, - "name":"org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTest", + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.jdbc.databases.PrestoTest"}, + "name":"org.apache.shardingsphere.test.natived.jdbc.databases.PrestoTest", + "allDeclaredFields": true, + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.databases.MySQLTest"}, + "name":"org.apache.shardingsphere.test.natived.proxy.databases.MySQLTest", + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.databases.PostgresTest"}, + "name":"org.apache.shardingsphere.test.natived.proxy.databases.PostgresTest", + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true +}, +{ + "condition":{"typeReachable":"org.apache.shardingsphere.test.natived.proxy.transactions.base.SeataTest"}, + "name":"org.apache.shardingsphere.test.natived.proxy.transactions.base.SeataTest", "allDeclaredFields": true, "allDeclaredConstructors": true, "allDeclaredMethods": true, diff --git a/test/native/src/test/resources/test-native/properties/presto-iceberg.properties b/test/native/src/test/resources/test-native/properties/presto-iceberg.properties new file mode 100644 index 0000000000000..8efb45c276cf6 --- /dev/null +++ b/test/native/src/test/resources/test-native/properties/presto-iceberg.properties @@ -0,0 +1,21 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +connector.name=iceberg +iceberg.catalog.type=hive +hive.metastore=file +hive.metastore.catalog.dir=file:/home/iceberg_data diff --git a/test/native/src/test/resources/test-native/yaml/jdbc/databases/presto.yaml b/test/native/src/test/resources/test-native/yaml/jdbc/databases/presto.yaml new file mode 100644 index 0000000000000..7e9ef8b8e7a6f --- /dev/null +++ b/test/native/src/test/resources/test-native/yaml/jdbc/databases/presto.yaml @@ -0,0 +1,66 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +dataSources: + ds_0: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.facebook.presto.jdbc.PrestoDriver + jdbcUrl: $${fixture.test-native.yaml.database.presto.ds0.jdbc-url::} + username: test + ds_1: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.facebook.presto.jdbc.PrestoDriver + jdbcUrl: $${fixture.test-native.yaml.database.presto.ds1.jdbc-url::} + username: test + ds_2: + dataSourceClassName: com.zaxxer.hikari.HikariDataSource + driverClassName: com.facebook.presto.jdbc.PrestoDriver + jdbcUrl: $${fixture.test-native.yaml.database.presto.ds2.jdbc-url::} + username: test + +rules: +- !SHARDING + tables: + t_order: + actualDataNodes: ds_0.t_order, ds_1.t_order, ds_2.t_order + keyGenerateStrategy: + column: order_id + keyGeneratorName: snowflake + t_order_item: + actualDataNodes: ds_0.t_order_item, ds_1.t_order_item, ds_2.t_order_item + keyGenerateStrategy: + column: order_item_id + keyGeneratorName: snowflake + defaultDatabaseStrategy: + standard: + shardingColumn: user_id + shardingAlgorithmName: inline + shardingAlgorithms: + inline: + type: CLASS_BASED + props: + strategy: STANDARD + algorithmClassName: org.apache.shardingsphere.test.natived.commons.algorithm.ClassBasedInlineShardingAlgorithmFixture + keyGenerators: + snowflake: + type: SNOWFLAKE + auditors: + sharding_key_required_auditor: + type: DML_SHARDING_CONDITIONS +- !BROADCAST + tables: + - t_address