@Override
    public ResultMerger newInstance(final String databaseName, final DatabaseType protocolType, final ShardingRule shardingRule, final ConfigurationProperties props,
                                    final SQLStatementContext sqlStatementContext) {
        if (sqlStatementContext instanceof SelectStatementContext) {
            return new ShardingDQLResultMerger(protocolType);
        }
        if (sqlStatementContext.getSqlStatement() instanceof DDLStatement) {
            return new ShardingDDLResultMerger();
        }
        if (sqlStatementContext.getSqlStatement() instanceof DALStatement) {
            return new ShardingDALResultMerger(databaseName, shardingRule);
        }
        return new TransparentResultMerger();
    }
@Test
    void assertNewInstanceWithDDLStatement() {
        ConfigurationProperties props = new ConfigurationProperties(new Properties());
        UnknownSQLStatementContext sqlStatementContext = new UnknownSQLStatementContext(new OpenGaussFetchStatement());
        assertThat(new ShardingResultMergerEngine().newInstance(DefaultDatabase.LOGIC_NAME, TypedSPILoader.getService(DatabaseType.class, "MySQL"), null, props,
                sqlStatementContext), instanceOf(ShardingDDLResultMerger.class));
    }