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


Java Query.setFirstRow方法代码示例

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


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

示例1: optimizeQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
public Query optimizeQuery(Query q, Category category) {
    if (category == Category.VALID) {
        q.setMaxRows(maxRows);

        if (firstRow > 1) {
            q.setFirstRow(firstRow);
        }

        if (orderColumn != null) {
            Column physicalColumn = orderColumn.getPhysicalColumn();
            q.orderBy(physicalColumn);
        }
    } else {
        throw new IllegalStateException("Can only optimize the VALID max rows category");
    }
    return q;
}
 
开发者ID:datacleaner,项目名称:AnalyzerBeans,代码行数:19,代码来源:MaxRowsFilter.java

示例2: testOffsetFetchConstruct

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Test
public void testOffsetFetchConstruct() {
    final int offset = 1000;
    final int rows = 100;
    final String where = "x > 1";

    final String offsetClause = " OFFSET " + (offset - 1) + " ROWS";
    final String fetchClause = " FETCH NEXT " + rows + " ROWS ONLY";

    final Query query = new Query().from(table).select(column);
    Assert.assertEquals("There shouldn't be OFFSET-FETCH clause.", query.toSql(), qr.rewriteQuery(query));

    query.setFirstRow(offset);
    Assert.assertEquals("Wrong or missing OFFSET clause.", query.toSql() + offsetClause, qr.rewriteQuery(query));

    query.setMaxRows(rows);
    Assert.assertEquals("Wrong or missing OFFSET and FETCH clauses.", query.toSql() + offsetClause + fetchClause,
            qr.rewriteQuery(query));

    query.setFirstRow(null);
    Assert.assertEquals("Wrong or missing FETCH clause.", query.toSql() + fetchClause, qr.rewriteQuery(query));
}
 
开发者ID:apache,项目名称:metamodel,代码行数:23,代码来源:OracleQueryRewriterTest.java

示例3: testOffsetFetchConstruct

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public void testOffsetFetchConstruct() {
    final int offset = 1000;
    final int rows = 100;

    final String baseQuery = "SELECT MY_SCHEMA.\"foo\".\"bar\" FROM MY_SCHEMA.\"foo\" ORDER BY id ASC";
    final String baseQueryWithTop =
            "SELECT TOP " + rows + " MY_SCHEMA.\"foo\".\"bar\" FROM MY_SCHEMA.\"foo\" ORDER BY id ASC";
    final String offsetClause = " OFFSET " + (offset - 1) + " ROWS";
    final String fetchClause = " FETCH NEXT " + rows + " ROWS ONLY";

    Query query = new Query();
    query.from(table).select(column).orderBy("id");
    Assert.assertEquals("There shouldn't be OFFSET-FETCH clause.", baseQuery, qr.rewriteQuery(query));

    query.setFirstRow(offset);
    Assert.assertEquals("Wrong or missing OFFSET clause.", baseQuery + offsetClause, qr.rewriteQuery(query));

    query.setMaxRows(rows);
    Assert.assertEquals("Wrong or missing OFFSET and FETCH clauses.", baseQuery + offsetClause + fetchClause,
            qr.rewriteQuery(query));

    query.setFirstRow(null);
    Assert.assertEquals("Using FETCH clause instead of TOP clause.", baseQueryWithTop, qr.rewriteQuery(query));
}
 
开发者ID:apache,项目名称:metamodel,代码行数:25,代码来源:SQLServerQueryRewriterTest.java

示例4: testJoinAndFirstRow

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public void testJoinAndFirstRow() throws Exception {
    DataSet data;

    DataContext dc = getDataContext();
    Query q = new Query();
    q.from(table1);
    q.from(table2);
    q.select(table1.getColumns());
    q.select(table2.getColumns());
    data = dc.executeQuery(q);
    assertEquals(48, data.toObjectArrays().size());

    q.setFirstRow(3);
    data = dc.executeQuery(q);
    assertEquals(46, data.toObjectArrays().size());
}
 
开发者ID:apache,项目名称:metamodel,代码行数:17,代码来源:QueryPostprocessDataContextTest.java

示例5: executeQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public static QueryResponse executeQuery(TenantContext tenant, String dataSource, DataContext dataContext,
        Query query, Integer offset, Integer limit) {

    if (offset != null) {
        query.setFirstRow(offset);
    }
    if (limit != null) {
        query.setMaxRows(limit);
    }

    logger.info("{}/{} - Executing query: {}", tenant.getTenantName(), dataSource, query);

    final List<String> headers;
    final List<List<Object>> data = new ArrayList<>();

    try (final DataSet dataSet = dataContext.executeQuery(query)) {
        headers = dataSet.getSelectItems().stream().map((si) -> si.toString()).collect(Collectors.toList());
        while (dataSet.next()) {
            final Object[] values = dataSet.getRow().getValues();
            data.add(Arrays.asList(values));
        }
    }

    final QueryResponse resp = new QueryResponse();
    resp.type("dataset");
    resp.headers(headers);
    resp.data(data);
    return resp;
}
 
开发者ID:apache,项目名称:metamodel-membrane,代码行数:30,代码来源:QueryController.java

示例6: 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

示例7: 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

示例8: parseOffsetClause

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private void parseOffsetClause(Query query, String offsetClause) {
    offsetClause = offsetClause.trim();
    if (!offsetClause.isEmpty()) {
        try {
            final int offset = Integer.parseInt(offsetClause);
            // ofset is 0-based, but first-row is 1-based
            final int firstRow = offset + 1;
            query.setFirstRow(firstRow);
        } catch (NumberFormatException e) {
            throw new QueryParserException("Could not parse OFFSET value: " + offsetClause);
        }
    }
}
 
开发者ID:apache,项目名称:metamodel,代码行数:14,代码来源:QueryParser.java

示例9: testOffsetAndMaxrows

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
public void testOffsetAndMaxrows() throws Exception {
    DataContext dc = new CsvDataContext(new File("src/test/resources/csv_people.csv"));

    Table table = dc.getDefaultSchema().getTables().get(0);
    Query q = dc.query().from(table).select(table.getColumnByName("name")).toQuery();
    q.setFirstRow(3);
    q.setMaxRows(2);

    DataSet ds;

    ds = dc.executeQuery(q);
    assertEquals(1, ds.getSelectItems().size());
    assertTrue(ds.next());
    assertEquals("peter", ds.getRow().getValue(0).toString());
    assertTrue(ds.next());
    assertEquals("bob", ds.getRow().getValue(0).toString());
    assertFalse(ds.next());
    ds.close();

    // try with iterator
    ds = dc.executeQuery(q);
    int i = 0;
    for (Row row : ds) {
        assertNotNull(row);
        i++;
    }
    assertEquals(2, i);
}
 
开发者ID:apache,项目名称:metamodel,代码行数:29,代码来源:CsvDataContextTest.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.setFirstRow方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。