Unverified Commit cb2c11e1 authored by 张亮's avatar 张亮 Committed by GitHub
Browse files

Merge pull request #2067 from cherrylzhao/dev

fix UnicastBackendHandler execute error while switching multi-schema.
parents de2a6606 70bc6569
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.shardingproxy.backend.communication.DatabaseCom
import org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.shardingproxy.backend.response.BackendResponse;
import org.apache.shardingsphere.shardingproxy.backend.response.query.QueryData;
import org.apache.shardingsphere.shardingproxy.backend.schema.LogicSchema;
import org.apache.shardingsphere.shardingproxy.backend.schema.LogicSchemas;
import org.apache.shardingsphere.shardingproxy.backend.text.TextProtocolBackendHandler;

@@ -46,7 +47,12 @@ public final class UnicastBackendHandler implements TextProtocolBackendHandler {
    
    @Override
    public BackendResponse execute() {
        databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(LogicSchemas.getInstance().getLogicSchemas().values().iterator().next(), sql, backendConnection);
        LogicSchema logicSchema = backendConnection.getLogicSchema();
        if (null == logicSchema) {
            logicSchema = LogicSchemas.getInstance().getLogicSchemas().values().iterator().next();
            backendConnection.setCurrentSchema(logicSchema.getName());
        }
        databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(logicSchema, sql, backendConnection);
        return databaseCommunicationEngine.execute();
    }
    
+4 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnitRunner;

import java.lang.reflect.Field;
@@ -39,11 +40,13 @@ import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public final class UnicastBackendHandlerTest {
    
    @Spy
    private BackendConnection backendConnection = new BackendConnection(TransactionType.LOCAL);
    
    @Mock
@@ -61,6 +64,7 @@ public final class UnicastBackendHandlerTest {
        setDatabaseCommunicationEngine(backendHandler);
        BackendResponse actual = backendHandler.execute();
        assertThat(actual, instanceOf(UpdateResponse.class));
        verify(backendConnection).setCurrentSchema(null);
        backendHandler.execute();
    }