未验证 提交 0bbc61f2 编写于 作者: L Liang Zhang 提交者: GitHub

Do not permit return null for ProxyContext.getMetaData() (#8168)

上级 d531e285
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package org.apache.shardingsphere.proxy.backend.communication; package org.apache.shardingsphere.proxy.backend.communication;
import com.google.common.base.Preconditions;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.LogicSQL; import org.apache.shardingsphere.infra.binder.LogicSQL;
...@@ -62,7 +61,7 @@ public final class DatabaseCommunicationEngineFactory { ...@@ -62,7 +61,7 @@ public final class DatabaseCommunicationEngineFactory {
* @return text protocol backend handler * @return text protocol backend handler
*/ */
public DatabaseCommunicationEngine newTextProtocolInstance(final SQLStatement sqlStatement, final String sql, final BackendConnection backendConnection) { public DatabaseCommunicationEngine newTextProtocolInstance(final SQLStatement sqlStatement, final String sql, final BackendConnection backendConnection) {
ShardingSphereMetaData metaData = getMetaData(backendConnection); ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
LogicSQL logicSQL = createLogicSQL(sqlStatement, sql, Collections.emptyList(), metaData); LogicSQL logicSQL = createLogicSQL(sqlStatement, sql, Collections.emptyList(), metaData);
JDBCExecuteEngine jdbcExecuteEngine = new JDBCExecuteEngine(backendConnection, new StatementAccessor()); JDBCExecuteEngine jdbcExecuteEngine = new JDBCExecuteEngine(backendConnection, new StatementAccessor());
return new JDBCDatabaseCommunicationEngine(logicSQL, metaData, jdbcExecuteEngine); return new JDBCDatabaseCommunicationEngine(logicSQL, metaData, jdbcExecuteEngine);
...@@ -78,18 +77,12 @@ public final class DatabaseCommunicationEngineFactory { ...@@ -78,18 +77,12 @@ public final class DatabaseCommunicationEngineFactory {
* @return binary protocol backend handler * @return binary protocol backend handler
*/ */
public DatabaseCommunicationEngine newBinaryProtocolInstance(final SQLStatement sqlStatement, final String sql, final List<Object> parameters, final BackendConnection backendConnection) { public DatabaseCommunicationEngine newBinaryProtocolInstance(final SQLStatement sqlStatement, final String sql, final List<Object> parameters, final BackendConnection backendConnection) {
ShardingSphereMetaData metaData = getMetaData(backendConnection); ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
LogicSQL logicSQL = createLogicSQL(sqlStatement, sql, new ArrayList<>(parameters), metaData); LogicSQL logicSQL = createLogicSQL(sqlStatement, sql, new ArrayList<>(parameters), metaData);
JDBCExecuteEngine jdbcExecuteEngine = new JDBCExecuteEngine(backendConnection, new PreparedStatementAccessor()); JDBCExecuteEngine jdbcExecuteEngine = new JDBCExecuteEngine(backendConnection, new PreparedStatementAccessor());
return new JDBCDatabaseCommunicationEngine(logicSQL, metaData, jdbcExecuteEngine); return new JDBCDatabaseCommunicationEngine(logicSQL, metaData, jdbcExecuteEngine);
} }
private ShardingSphereMetaData getMetaData(final BackendConnection backendConnection) {
ShardingSphereMetaData result = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
Preconditions.checkNotNull(result);
return result;
}
private LogicSQL createLogicSQL(final SQLStatement sqlStatement, final String sql, final List<Object> parameters, final ShardingSphereMetaData metaData) { private LogicSQL createLogicSQL(final SQLStatement sqlStatement, final String sql, final List<Object> parameters, final ShardingSphereMetaData metaData) {
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaData.getSchema(), parameters, sqlStatement); SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaData.getSchema(), parameters, sqlStatement);
return new LogicSQL(sqlStatementContext, sql, parameters); return new LogicSQL(sqlStatementContext, sql, parameters);
......
...@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts; ...@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts; import org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.JDBCBackendDataSource; import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.JDBCBackendDataSource;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.transaction.context.TransactionContexts; import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.apache.shardingsphere.transaction.context.impl.StandardTransactionContexts; import org.apache.shardingsphere.transaction.context.impl.StandardTransactionContexts;
...@@ -30,7 +31,6 @@ import javax.sql.DataSource; ...@@ -30,7 +31,6 @@ import javax.sql.DataSource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
/** /**
...@@ -84,13 +84,16 @@ public final class ProxyContext { ...@@ -84,13 +84,16 @@ public final class ProxyContext {
} }
/** /**
* Get meta data. * Get ShardingSphere meta data.
* *
* @param schemaName schema name * @param schemaName schema name
* @return meta data * @return ShardingSphere meta data
*/ */
public ShardingSphereMetaData getMetaData(final String schemaName) { public ShardingSphereMetaData getMetaData(final String schemaName) {
return Strings.isNullOrEmpty(schemaName) ? null : metaDataContexts.getMetaDataMap().get(schemaName); if (Strings.isNullOrEmpty(schemaName) || !metaDataContexts.getMetaDataMap().containsKey(schemaName)) {
throw new NoDatabaseSelectedException();
}
return metaDataContexts.getMetaDataMap().get(schemaName);
} }
/** /**
...@@ -112,7 +115,7 @@ public final class ProxyContext { ...@@ -112,7 +115,7 @@ public final class ProxyContext {
if (schemaNames.isEmpty()) { if (schemaNames.isEmpty()) {
return Optional.empty(); return Optional.empty();
} }
Map<String, DataSource> dataSources = Objects.requireNonNull(getMetaData(schemaNames.get(0))).getResource().getDataSources(); Map<String, DataSource> dataSources = getMetaData(schemaNames.get(0)).getResource().getDataSources();
return dataSources.values().stream().findFirst(); return dataSources.values().stream().findFirst();
} }
} }
...@@ -19,12 +19,10 @@ package org.apache.shardingsphere.proxy.backend.text.admin; ...@@ -19,12 +19,10 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader; import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection; import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse; import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData; import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse; import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
...@@ -53,14 +51,10 @@ public final class ShowTablesBackendHandler implements TextProtocolBackendHandle ...@@ -53,14 +51,10 @@ public final class ShowTablesBackendHandler implements TextProtocolBackendHandle
@Override @Override
public BackendResponse execute() throws SQLException { public BackendResponse execute() throws SQLException {
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()); if (!ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).isComplete()) {
if (null == metaData) {
throw new NoDatabaseSelectedException();
}
if (!metaData.isComplete()) {
return getDefaultQueryResponse(backendConnection.getSchemaName()); return getDefaultQueryResponse(backendConnection.getSchemaName());
} }
// TODO Get all tables from meta data. // TODO Get all tables from meta data
databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection); databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection);
return databaseCommunicationEngine.execute(); return databaseCommunicationEngine.execute();
} }
......
...@@ -18,12 +18,10 @@ ...@@ -18,12 +18,10 @@
package org.apache.shardingsphere.proxy.backend.text.query; package org.apache.shardingsphere.proxy.backend.text.query;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection; import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException; import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse; import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData; import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
...@@ -50,11 +48,7 @@ public final class QueryBackendHandler implements TextProtocolBackendHandler { ...@@ -50,11 +48,7 @@ public final class QueryBackendHandler implements TextProtocolBackendHandler {
@Override @Override
public BackendResponse execute() throws SQLException { public BackendResponse execute() throws SQLException {
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()); if (!ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).isComplete()) {
if (null == metaData) {
throw new NoDatabaseSelectedException();
}
if (!metaData.isComplete()) {
throw new RuleNotExistsException(); throw new RuleNotExistsException();
} }
databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection); databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection);
......
...@@ -29,7 +29,6 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; ...@@ -29,7 +29,6 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine; import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection; import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException; import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse; import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData; import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
...@@ -68,9 +67,6 @@ public final class ShardingCTLExplainBackendHandler implements TextProtocolBacke ...@@ -68,9 +67,6 @@ public final class ShardingCTLExplainBackendHandler implements TextProtocolBacke
throw new InvalidShardingCTLFormatException(sql); throw new InvalidShardingCTLFormatException(sql);
} }
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()); ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
if (null == metaData) {
throw new NoDatabaseSelectedException();
}
if (!metaData.isComplete()) { if (!metaData.isComplete()) {
throw new RuleNotExistsException(); throw new RuleNotExistsException();
} }
......
...@@ -25,7 +25,6 @@ import org.apache.shardingsphere.infra.merge.result.MergedResult; ...@@ -25,7 +25,6 @@ import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection; import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext; import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException; import org.apache.shardingsphere.proxy.backend.exception.RuleNotExistsException;
import org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.command.HintShowTableStatusCommand; import org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.command.HintShowTableStatusCommand;
import org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.result.HintShowTableStatusResult; import org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.result.HintShowTableStatusResult;
...@@ -60,9 +59,6 @@ public final class HintShowTableStatusExecutor extends AbstractHintQueryExecutor ...@@ -60,9 +59,6 @@ public final class HintShowTableStatusExecutor extends AbstractHintQueryExecutor
protected MergedResult createMergedResult() { protected MergedResult createMergedResult() {
Map<String, HintShowTableStatusResult> results = new HashMap<>(); Map<String, HintShowTableStatusResult> results = new HashMap<>();
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()); ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
if (null == metaData) {
throw new NoDatabaseSelectedException();
}
if (!metaData.isComplete()) { if (!metaData.isComplete()) {
throw new RuleNotExistsException(); throw new RuleNotExistsException();
} }
......
...@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType; ...@@ -25,6 +25,7 @@ import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel; import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.jdbc.test.MockedDataSource; import org.apache.shardingsphere.jdbc.test.MockedDataSource;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.transaction.context.TransactionContexts; import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Test; import org.junit.Test;
...@@ -86,6 +87,26 @@ public final class ProxyContextTest { ...@@ -86,6 +87,26 @@ public final class ProxyContextTest {
assertFalse(ProxyContext.getInstance().schemaExists("schema_2")); assertFalse(ProxyContext.getInstance().schemaExists("schema_2"));
} }
@Test(expected = NoDatabaseSelectedException.class)
public void assertGetSchemaWithNull() {
assertNull(ProxyContext.getInstance().getMetaData(null));
}
@Test(expected = NoDatabaseSelectedException.class)
public void assertGetSchemaWithEmptyString() {
assertNull(ProxyContext.getInstance().getMetaData(""));
}
@Test(expected = NoDatabaseSelectedException.class)
public void assertGetSchemaWhenNotExisted() throws NoSuchFieldException, IllegalAccessException {
Map<String, ShardingSphereMetaData> metaDataMap = mockMetaDataMap(Collections.emptyMap());
Field metaDataContexts = ProxyContext.getInstance().getClass().getDeclaredField("metaDataContexts");
metaDataContexts.setAccessible(true);
metaDataContexts.set(ProxyContext.getInstance(),
new StandardMetaDataContexts(metaDataMap, mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
ProxyContext.getInstance().getMetaData("schema1");
}
@Test @Test
public void assertGetSchema() throws NoSuchFieldException, IllegalAccessException { public void assertGetSchema() throws NoSuchFieldException, IllegalAccessException {
Map<String, ShardingSphereMetaData> metaDataMap = mockMetaDataMap(Collections.emptyMap()); Map<String, ShardingSphereMetaData> metaDataMap = mockMetaDataMap(Collections.emptyMap());
...@@ -93,9 +114,6 @@ public final class ProxyContextTest { ...@@ -93,9 +114,6 @@ public final class ProxyContextTest {
metaDataContexts.setAccessible(true); metaDataContexts.setAccessible(true);
metaDataContexts.set(ProxyContext.getInstance(), metaDataContexts.set(ProxyContext.getInstance(),
new StandardMetaDataContexts(metaDataMap, mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType())); new StandardMetaDataContexts(metaDataMap, mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
assertNull(ProxyContext.getInstance().getMetaData(null));
assertNull(ProxyContext.getInstance().getMetaData(""));
assertNull(ProxyContext.getInstance().getMetaData("schema1"));
assertThat(metaDataMap.get("schema"), is(ProxyContext.getInstance().getMetaData("schema"))); assertThat(metaDataMap.get("schema"), is(ProxyContext.getInstance().getMetaData("schema")));
} }
......
...@@ -32,7 +32,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQ ...@@ -32,7 +32,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQ
import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry; import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.executor.sql.QueryResult; import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader; import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory; import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection; import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
...@@ -43,7 +43,6 @@ import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse; ...@@ -43,7 +43,6 @@ import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse; import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
import org.apache.shardingsphere.proxy.frontend.command.executor.QueryCommandExecutor; import org.apache.shardingsphere.proxy.frontend.command.executor.QueryCommandExecutor;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType; import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement; import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.ResultSetMetaData; import java.sql.ResultSetMetaData;
...@@ -69,8 +68,7 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor { ...@@ -69,8 +68,7 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor {
public PostgreSQLComBindExecutor(final PostgreSQLComBindPacket packet, final BackendConnection backendConnection) { public PostgreSQLComBindExecutor(final PostgreSQLComBindPacket packet, final BackendConnection backendConnection) {
this.packet = packet; this.packet = packet;
ShardingSphereMetaData metaData = ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()); if (null != packet.getSql()) {
if (null != packet.getSql() && null != metaData) {
ShardingSphereSQLParserEngine sqlStatementParserEngine = new ShardingSphereSQLParserEngine( ShardingSphereSQLParserEngine sqlStatementParserEngine = new ShardingSphereSQLParserEngine(
DatabaseTypeRegistry.getTrunkDatabaseTypeName(ProxyContext.getInstance().getMetaDataContexts().getDatabaseType())); DatabaseTypeRegistry.getTrunkDatabaseTypeName(ProxyContext.getInstance().getMetaDataContexts().getDatabaseType()));
SQLStatement sqlStatement = sqlStatementParserEngine.parse(packet.getSql(), true); SQLStatement sqlStatement = sqlStatementParserEngine.parse(packet.getSql(), true);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册