code: public static MergeEngine newInstance(final DatabaseType databaseType, final ShardingRule shardingRule,
                                            final SQLRouteResult routeResult, final ShardingTableMetaData shardingTableMetaData, final List<QueryResult> queryResults) throws SQLException {
          if (routeResult.getSqlStatement() instanceof SelectStatement) {
              return new DQLMergeEngine(databaseType, routeResult, queryResults);
          } 
          if (routeResult.getSqlStatement() instanceof DALStatement) {
              return new DALMergeEngine(shardingRule, queryResults, (DALStatement) routeResult.getSqlStatement(), shardingTableMetaData);
          }
          throw new UnsupportedOperationException(String.format("Cannot support type '%s'", routeResult.getSqlStatement().getType()));
      }
docs: Create merge engine instance.
  
  @param databaseType database type
  @param shardingRule sharding rule
  @param routeResult SQL route result
  @param shardingTableMetaData sharding table meta Data
  @param queryResults query results
  @return merge engine instance
  @throws SQLException SQL exception