You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2015/03/12 09:16:41 UTC
[3/7] metamodel git commit: Fixed filtering and paging order in post
processing scenario
Fixed filtering and paging order in post processing scenario
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/a93bd9c9
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/a93bd9c9
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/a93bd9c9
Branch: refs/heads/master
Commit: a93bd9c92564215e63c78bcd74d10261e6c0a226
Parents: 26801d3
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sun Mar 8 15:07:45 2015 +0100
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sun Mar 8 15:07:45 2015 +0100
----------------------------------------------------------------------
.../metamodel/QueryPostprocessDataContext.java | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/a93bd9c9/core/src/main/java/org/apache/metamodel/QueryPostprocessDataContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/QueryPostprocessDataContext.java b/core/src/main/java/org/apache/metamodel/QueryPostprocessDataContext.java
index 6e6363a..0cdbe8b 100644
--- a/core/src/main/java/org/apache/metamodel/QueryPostprocessDataContext.java
+++ b/core/src/main/java/org/apache/metamodel/QueryPostprocessDataContext.java
@@ -618,9 +618,18 @@ public abstract class QueryPostprocessDataContext extends AbstractDataContext im
protected DataSet materializeMainSchemaTable(Table table, List<SelectItem> selectItems,
List<FilterItem> whereItems, int firstRow, int maxRows) {
final List<SelectItem> workingSelectItems = buildWorkingSelectItems(selectItems, whereItems);
- DataSet dataSet = materializeMainSchemaTable(table, workingSelectItems, firstRow, maxRows);
- dataSet = MetaModelHelper.getFiltered(dataSet, whereItems);
- dataSet = MetaModelHelper.getSelection(selectItems, dataSet);
+ DataSet dataSet;
+ if (whereItems.isEmpty()) {
+ // paging is pushed down to materializeMainSchemaTable
+ dataSet = materializeMainSchemaTable(table, workingSelectItems, firstRow, maxRows);
+ dataSet = MetaModelHelper.getSelection(selectItems, dataSet);
+ } else {
+ // do not push down paging, first we have to apply filtering
+ dataSet = materializeMainSchemaTable(table, workingSelectItems, 1, -1);
+ dataSet = MetaModelHelper.getFiltered(dataSet, whereItems);
+ dataSet = MetaModelHelper.getPaged(dataSet, firstRow, maxRows);
+ dataSet = MetaModelHelper.getSelection(selectItems, dataSet);
+ }
return dataSet;
}