当前位置: 首页>>代码示例>>Java>>正文


Java Query.getMaxRows方法代码示例

本文整理汇总了Java中org.apache.metamodel.query.Query.getMaxRows方法的典型用法代码示例。如果您正苦于以下问题:Java Query.getMaxRows方法的具体用法?Java Query.getMaxRows怎么用?Java Query.getMaxRows使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.metamodel.query.Query的用法示例。


在下文中一共展示了Query.getMaxRows方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: rewriteQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
/**
 * {@inheritDoc}
 * 
 * If the Max rows and/or First row property of the query is set, then we
 * will use the database's LIMIT and OFFSET functions.
 */
@Override
public String rewriteQuery(Query query) {
    String queryString = super.rewriteQuery(query);
    Integer maxRows = query.getMaxRows();
    Integer firstRow = query.getFirstRow();
    if (maxRows != null || firstRow != null) {
        if (maxRows == null) {
            maxRows = Integer.MAX_VALUE;
        }
        queryString = queryString + " LIMIT " + maxRows;

        if (firstRow != null && firstRow > 1) {
            // offset is 0-based
            int offset = firstRow - 1;
            queryString = queryString + " OFFSET " + offset;
        }
    }


    return queryString;
}
 
开发者ID:apache,项目名称:metamodel,代码行数:28,代码来源:LimitOffsetQueryRewriter.java

示例2: rewriteSelectClause

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
protected String rewriteSelectClause(Query query, SelectClause selectClause) {
    String result = super.rewriteSelectClause(query, selectClause);

    Integer firstRow = query.getFirstRow();
    Integer maxRows = query.getMaxRows();
    if (maxRows != null || firstRow != null) {
        if (maxRows == null) {
            maxRows = Integer.MAX_VALUE;
        }
        if (firstRow == null || firstRow <= 0) {
            result = "SELECT TOP " + maxRows + " " + result.substring(7);
        } else {
            final int offset = firstRow - 1;
            result = "SELECT LIMIT " + offset + " " + maxRows + " " + result.substring(7);
        }
    }

    return result;
}
 
开发者ID:apache,项目名称:metamodel,代码行数:21,代码来源:HsqldbQueryRewriter.java

示例3: createExpectedRowsRef

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private Supplier<Integer> createExpectedRowsRef() {
    // TODO: This only seems valid for source tables
    return new LazyRef<Integer>() {

        @Override
        protected Integer fetch() {
            int expectedRows = -1;
            {
                final Query originalQuery = getQuery();
                final Query countQuery = originalQuery.clone();
                countQuery.setMaxRows(null);
                countQuery.setFirstRow(null);
                countQuery.getSelectClause().removeItems();
                countQuery.getOrderByClause().removeItems();
                countQuery.selectCount();
                countQuery.getSelectClause().getItem(0).setFunctionApproximationAllowed(true);

                final Datastore datastore = _publisher.getStream().getAnalysisJob().getDatastore();
                try (DatastoreConnection connection = datastore.openConnection()) {
                    try (DataSet countDataSet = connection.getDataContext().executeQuery(countQuery)) {
                        if (countDataSet.next()) {
                            final Number count =
                                    ConvertToNumberTransformer.transformValue(countDataSet.getRow().getValue(0));
                            if (count != null) {
                                expectedRows = count.intValue();
                            }
                        }
                    }
                }

                final Integer maxRows = originalQuery.getMaxRows();
                if (maxRows != null) {
                    expectedRows = Math.min(expectedRows, maxRows.intValue());
                }
            }

            return expectedRows;
        }
    };
}
 
开发者ID:datacleaner,项目名称:DataCleaner,代码行数:41,代码来源:RowProcessingMetricsImpl.java

示例4: testSimpleOptimization

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public void testSimpleOptimization() throws Exception {
    publisher = createPublisher();
    consumers.add(createConsumer(maxRowsBuilder, publisher));
    consumers.add(createConsumer(stringAnalyzerBuilder, publisher));

    final RowProcessingQueryOptimizer optimizer =
            new RowProcessingQueryOptimizerImpl(datastore, consumers, baseQuery);

    assertTrue(optimizer.isOptimizable());

    final Query optimizedQuery = optimizer.getOptimizedQuery();
    final Integer maxRows = optimizedQuery.getMaxRows();
    assertNotNull("No max rows specified!", maxRows);
    assertEquals(1000, maxRows.intValue());
}
 
开发者ID:datacleaner,项目名称:DataCleaner,代码行数:16,代码来源:RowProcessingQueryOptimizerTest.java

示例5: testSimpleOptimization

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public void testSimpleOptimization() throws Exception {
    RowProcessingQueryOptimizer optimizer = new RowProcessingQueryOptimizer(datastore, consumers, baseQuery);

    assertTrue(optimizer.isOptimizable());

    Query optimizedQuery = optimizer.getOptimizedQuery();
    Integer maxRows = optimizedQuery.getMaxRows();
    assertNotNull("No max rows specified!", maxRows);
    assertEquals(1000, maxRows.intValue());
}
 
开发者ID:datacleaner,项目名称:AnalyzerBeans,代码行数:11,代码来源:RowProcessingQueryOptimizerTest.java

示例6: createExpectedRowsRef

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private Ref<Integer> createExpectedRowsRef() {
    return new LazyRef<Integer>() {

        @Override
        protected Integer fetch() {
            int expectedRows = -1;
            {
                final Query originalQuery = getQuery();
                final Query countQuery = originalQuery.clone();
                countQuery.setMaxRows(null);
                countQuery.setFirstRow(null);
                countQuery.getSelectClause().removeItems();
                countQuery.getOrderByClause().removeItems();
                countQuery.selectCount();
                countQuery.getSelectClause().getItem(0).setFunctionApproximationAllowed(true);

                final Datastore datastore = _publishers.getDatastore();
                try (final DatastoreConnection connection = datastore.openConnection()) {
                    try (final DataSet countDataSet = connection.getDataContext().executeQuery(countQuery)) {
                        if (countDataSet.next()) {
                            final Number count = ConvertToNumberTransformer.transformValue(countDataSet.getRow()
                                    .getValue(0));
                            if (count != null) {
                                expectedRows = count.intValue();
                            }
                        }
                    }
                }

                final Integer maxRows = originalQuery.getMaxRows();
                if (maxRows != null) {
                    expectedRows = Math.min(expectedRows, maxRows.intValue());
                }
            }

            return expectedRows;
        }
    };
}
 
开发者ID:datacleaner,项目名称:AnalyzerBeans,代码行数:40,代码来源:RowProcessingMetricsImpl.java

示例7: rewriteSelectClause

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
protected String rewriteSelectClause(Query query, SelectClause selectClause) {
    String result = super.rewriteSelectClause(query, selectClause);

    Integer maxRows = query.getMaxRows();
    if (maxRows != null) {
        if (query.getSelectClause().isDistinct()) {
            result = "SELECT DISTINCT TOP " + maxRows + " " + result.substring("SELECT DISTINCT ".length());
        } else {
            result = "SELECT TOP " + maxRows + " " + result.substring("SELECT ".length());
        }
    }

    return result;
}
 
开发者ID:apache,项目名称:metamodel,代码行数:16,代码来源:SQLServerQueryRewriter.java

示例8: rewriteQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
/**
 * {@inheritDoc}
 *
 * If the Max rows and First row property of the query is set, then we
 * will use the database's "OFFSET i ROWS FETCH NEXT j ROWS ONLY" construct.
 */
@Override
public String rewriteQuery(final Query query) {
    final boolean hasOrderBy = !query.getOrderByClause().isEmpty();
    String queryString = super.rewriteQuery(query);

    if (isSupportedVersion(_databaseProductName, _databaseSupportedVersion) && (query.getMaxRows() != null
            || query.getFirstRow() != null)) {
        final Integer maxRows = query.getMaxRows();
        Integer firstRow = query.getFirstRow();

        if (!_fetchNeedsOffsetAndOrderBy || hasOrderBy) {
            if (firstRow != null) {
                queryString = queryString + " OFFSET " + (firstRow - 1) + " ROWS";
            } else if (_fetchNeedsOffsetAndOrderBy) {
                // TOP should do it.
                return queryString;
            }

            if (maxRows != null) {
                queryString = queryString.replaceAll(" TOP [0-9]+", "");
                queryString += " FETCH NEXT " + maxRows + " ROWS ONLY";
            }
        }
    }
    return queryString;
}
 
开发者ID:apache,项目名称:metamodel,代码行数:33,代码来源:OffsetFetchQueryRewriter.java

示例9: getFetchSize

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
/**
 * Gets the fetch size of a query
 * 
 * @param query
 *            the query to execute
 * @return an integer representing how many rows to eagerly fetch for the
 *         query
 */
public int getFetchSize(Query query) {
	if (isSingleRowQuery(query)) {
		return 1;
	}
	int bytesPerRow = getRowSize(query);
	int result = getFetchSize(bytesPerRow);
	final Integer maxRows = query.getMaxRows();
	if (maxRows != null && result > maxRows) {
		logger.debug("Result ({}) was below max rows ({}), adjusting.",
				result, maxRows);
		result = maxRows;
	}
	return result;
}
 
开发者ID:apache,项目名称:metamodel,代码行数:23,代码来源:FetchSizeCalculator.java

示例10: rewriteQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
public String rewriteQuery(Query query) {
    final Integer firstRow = query.getFirstRow();
    final Integer maxRows = query.getMaxRows();

    if (maxRows == null && (firstRow == null || firstRow.intValue() == 1)) {
        return super.rewriteQuery(query);
    }

    if ((firstRow == null || firstRow.intValue() == 1) && maxRows != null && maxRows > 0) {
        // We prefer to use the "FETCH FIRST [n] ROWS ONLY" approach, if
        // firstRow is not specified.
        return super.rewriteQuery(query) + " FETCH FIRST " + maxRows + " ROWS ONLY";

    } else {
        // build a ROW_NUMBER() query like this:

        // SELECT [original select clause]
        // FROM ([original select clause],
        // ROW_NUMBER() AS metamodel_row_number
        // FROM [remainder of regular query])
        // WHERE metamodel_row_number BETWEEN [firstRow] and [maxRows];

        final Query innerQuery = query.clone();
        innerQuery.setFirstRow(null);
        innerQuery.setMaxRows(null);

        final Query outerQuery = new Query();
        final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery");
        outerQuery.from(subQuerySelectItem);

        final List<SelectItem> innerSelectItems = innerQuery.getSelectClause().getItems();
        for (SelectItem selectItem : innerSelectItems) {
            outerQuery.select(new SelectItem(selectItem, subQuerySelectItem));
        }

        final String rewrittenOrderByClause = rewriteOrderByClause(innerQuery, innerQuery.getOrderByClause());
        final String rowOver = "ROW_NUMBER() " + "OVER(" + rewrittenOrderByClause + ")";
        innerQuery.select(new SelectItem(rowOver, "metamodel_row_number"));
        innerQuery.getOrderByClause().removeItems();

        final String baseQueryString = rewriteQuery(outerQuery);

        if (maxRows == null) {
            return baseQueryString + " WHERE metamodel_row_number > " + (firstRow - 1);
        }

        return baseQueryString + " WHERE metamodel_row_number BETWEEN " + firstRow + " AND "
                + (firstRow - 1 + maxRows);
    }
}
 
开发者ID:apache,项目名称:metamodel,代码行数:52,代码来源:DB2QueryRewriter.java


注:本文中的org.apache.metamodel.query.Query.getMaxRows方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。