You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2015/06/02 09:44:29 UTC
[1/5] jena git commit: TS_Binding included twice.
Repository: jena
Updated Branches:
refs/heads/master 86e0dd85e -> cb18f7482
TS_Binding included twice.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/cc6df922
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/cc6df922
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/cc6df922
Branch: refs/heads/master
Commit: cc6df92263fdb3b13693f11d66664e8a8c3e155d
Parents: 7a8130d
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Jun 1 18:32:17 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Jun 1 18:32:17 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/jena/sparql/TC_General.java | 2 --
.../jena/sparql/engine/binding/TS_Binding.java | 32 --------------------
.../engine/iterator/TestQueryIterSort.java | 3 +-
3 files changed, 1 insertion(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/cc6df922/jena-arq/src/test/java/org/apache/jena/sparql/TC_General.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/TC_General.java b/jena-arq/src/test/java/org/apache/jena/sparql/TC_General.java
index cccf5e7..643401f 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/TC_General.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/TC_General.java
@@ -25,7 +25,6 @@ import org.apache.jena.sparql.algebra.optimize.TS_Optimization ;
import org.apache.jena.sparql.api.TS_API ;
import org.apache.jena.sparql.core.TS_Core ;
import org.apache.jena.sparql.engine.TS_Engine ;
-import org.apache.jena.sparql.engine.binding.TS_Binding ;
import org.apache.jena.sparql.expr.E_Function ;
import org.apache.jena.sparql.expr.NodeValue ;
import org.apache.jena.sparql.expr.TS_Expr ;
@@ -58,7 +57,6 @@ import org.junit.runners.Suite ;
, TS_UserFunctions.class
, TS_ResultSet.class
- , TS_Binding.class
, TS_Engine.class
, TS_Negation.class
, TS_Solver.class
http://git-wip-us.apache.org/repos/asf/jena/blob/cc6df922/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TS_Binding.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TS_Binding.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TS_Binding.java
deleted file mode 100644
index ca08d78..0000000
--- a/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TS_Binding.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.sparql.engine.binding;
-
-import org.junit.runner.RunWith ;
-import org.junit.runners.Suite ;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses( {
- TestBindingStreams.class
-})
-public class TS_Binding
-{
-
-}
-
http://git-wip-us.apache.org/repos/asf/jena/blob/cc6df922/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestQueryIterSort.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestQueryIterSort.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestQueryIterSort.java
index aaea114..cee1fae 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestQueryIterSort.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestQueryIterSort.java
@@ -113,8 +113,7 @@ public class TestQueryIterSort {
@Test
public void testCleanAfterClose()
{
- iterator.setCallback(new Callback() { @Override
- public void call() { /* do nothing */ } });
+ iterator.setCallback(()->{}); // Do nothing.
assertEquals(0, iterator.getReturnedElementCount());
Context context = new Context() ;
context.set(ARQ.spillToDiskThreshold, 10L) ;
[4/5] jena git commit: JENA-949 : Reimplement QueryIterDistinct
Posted by an...@apache.org.
JENA-949 : Reimplement QueryIterDistinct
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/40f1c8be
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/40f1c8be
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/40f1c8be
Branch: refs/heads/master
Commit: 40f1c8bea1dce836970922867e930fbf8f696baf
Parents: 8b2ed19
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 08:43:12 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 08:43:12 2015 +0100
----------------------------------------------------------------------
.../iterator/AbstractTestDistinctReduced.java | 108 +++++++++++++++++++
.../engine/iterator/TS_QueryIterators.java | 33 ++++++
.../engine/iterator/TestDistinctDataBag.java | 40 +++++++
.../sparql/engine/iterator/TestDistinctMem.java | 37 +++++++
4 files changed, 218 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/40f1c8be/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/AbstractTestDistinctReduced.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/AbstractTestDistinctReduced.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/AbstractTestDistinctReduced.java
new file mode 100644
index 0000000..d9b5ec3
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/AbstractTestDistinctReduced.java
@@ -0,0 +1,108 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.engine.iterator;
+
+import java.util.Arrays ;
+import java.util.HashSet ;
+import java.util.List ;
+import java.util.Set ;
+import java.util.stream.Collectors ;
+
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.DS ;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.engine.QueryIterator ;
+import org.apache.jena.sparql.engine.binding.Binding ;
+import org.apache.jena.sparql.engine.binding.BindingFactory ;
+import org.apache.jena.sparql.engine.binding.BindingMap ;
+import org.junit.Test ;
+
+public abstract class AbstractTestDistinctReduced extends BaseTest {
+
+ static List<String> data1 = Arrays.asList("0","1","1","3","9","5","6","8","9","0") ;
+ static List<String> results1 = Arrays.asList("0","1", "3","9","5","6","8" ) ;
+ static List<String> data2 = Arrays.asList("0","0","0","0") ;
+ static List<String> results2 = Arrays.asList("0","0","0","0") ;
+
+ static Var var_a = Var.alloc("a") ;
+ static Var var_b = Var.alloc("b") ;
+
+ private static List<Binding> build(List<String> items) {
+ return items.stream().sequential().map((s)->{
+ BindingMap b = BindingFactory.create() ;
+ b.add(var_a, NodeFactory.createLiteral(s)) ;
+ return b ;
+ }).collect(Collectors.toList()) ;
+ }
+
+ protected abstract QueryIterator createQueryIter(List<Binding> data) ;
+
+ @Test public void distinct0() {
+ distinct(DS.list(), DS.list()) ;
+ }
+
+ @Test public void distinct1() {
+ List<String> data = Arrays.asList("0","1","1","3","9","5","6","8","9","0") ;
+ List<String> results = Arrays.asList("0","1", "3","9","5","6","8" ) ;
+ distinct(data, results) ;
+ }
+
+ @Test public void distinct2() {
+ List<String> data = Arrays.asList("0","0","0","0") ;
+ List<String> results = Arrays.asList("0") ;
+ distinct(data, results) ;
+ }
+
+ @Test public void distinct3() {
+ List<String> data = Arrays.asList("0","1","1","A","2","2","2","B","2","3","3","C","4","4","5") ;
+ List<String> results = Arrays.asList("0","1","A","2","B","3","C","4","5") ;
+ distinct(data, results) ;
+ }
+
+
+ private void distinct(List<String> data, List<String> results) {
+ // Distinct Iterators are not required to preserve order.
+ List<Binding> input = build(data) ;
+ List<Binding> output = build(results) ;
+
+ QueryIterator qIter = createQueryIter(input) ;
+
+ List<Binding> iterList = Iter.toList(qIter) ;
+ assertEquals(output+" :: "+iterList,
+ output.size() , iterList.size()) ;
+ // Assume results has no duplicates so same size, same members => order dependent same.
+ Set<Binding> testExpected = new HashSet<>(output) ;
+ Set<Binding> testResult = new HashSet<>(iterList) ;
+ assertEquals(testExpected , testResult) ;
+
+ }
+
+ private void testSame(QueryIterator qIter, List<Binding> data) {
+ List<Binding> iterList = Iter.toList(qIter) ;
+ assertEquals(data, iterList) ;
+
+
+ }
+
+
+
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/40f1c8be/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TS_QueryIterators.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TS_QueryIterators.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TS_QueryIterators.java
new file mode 100644
index 0000000..2d3148c
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TS_QueryIterators.java
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.engine.iterator;
+
+import org.junit.runner.RunWith ;
+import org.junit.runners.Suite ;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses( {
+ TestQueryIterSort.class
+ , TestDistinctMem.class
+ , TestDistinctDataBag.class
+})
+public class TS_QueryIterators {
+
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/40f1c8be/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctDataBag.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctDataBag.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctDataBag.java
new file mode 100644
index 0000000..1b70334
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctDataBag.java
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.engine.iterator;
+
+import java.util.List ;
+
+import org.apache.jena.query.ARQ ;
+import org.apache.jena.sparql.engine.ExecutionContext ;
+import org.apache.jena.sparql.engine.QueryIterator ;
+import org.apache.jena.sparql.engine.binding.Binding ;
+import org.apache.jena.sparql.util.Context ;
+
+public class TestDistinctDataBag extends AbstractTestDistinctReduced {
+
+ @Override
+ protected QueryIterator createQueryIter(List<Binding> data) {
+ QueryIterator qIter = new QueryIterPlainWrapper(data.iterator()) ;
+ Context cxt = new Context() ;
+ cxt.set(ARQ.spillToDiskThreshold, 2L);
+ return new QueryIterDistinct(qIter, new ExecutionContext(cxt, null, null, null)) ;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/jena/blob/40f1c8be/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctMem.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctMem.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctMem.java
new file mode 100644
index 0000000..a9c90ed
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/iterator/TestDistinctMem.java
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.engine.iterator;
+
+import java.util.List ;
+
+import org.apache.jena.sparql.engine.ExecutionContext ;
+import org.apache.jena.sparql.engine.QueryIterator ;
+import org.apache.jena.sparql.engine.binding.Binding ;
+import org.apache.jena.sparql.util.Context ;
+
+public class TestDistinctMem extends AbstractTestDistinctReduced {
+
+ @Override
+ protected QueryIterator createQueryIter(List<Binding> data) {
+ QueryIterator qIter = new QueryIterPlainWrapper(data.iterator()) ;
+ return new QueryIterDistinctMem(qIter, new ExecutionContext(new Context(), null, null, null)) ;
+ }
+
+}
+
[2/5] jena git commit: JENA-949 : Reimplement QueryIterDistinct
Posted by an...@apache.org.
JENA-949 : Reimplement QueryIterDistinct
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8b2ed199
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8b2ed199
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8b2ed199
Branch: refs/heads/master
Commit: 8b2ed19979b06028c635a68945509b069e455e07
Parents: cc6df92
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 08:38:29 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 08:38:29 2015 +0100
----------------------------------------------------------------------
.../engine/iterator/QueryIterDistinct.java | 116 ++++++++++++++++---
.../engine/iterator/QueryIterDistinctMem.java | 5 +-
.../apache/jena/sparql/engine/TS_Engine.java | 4 +-
3 files changed, 104 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/8b2ed199/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinct.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinct.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinct.java
index b026cc0..a88cb39 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinct.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinct.java
@@ -18,50 +18,130 @@
package org.apache.jena.sparql.engine.iterator ;
-import java.util.ArrayList ;
-import java.util.Comparator ;
+import java.util.* ;
import org.apache.jena.atlas.data.BagFactory ;
import org.apache.jena.atlas.data.DistinctDataNet ;
import org.apache.jena.atlas.data.ThresholdPolicy ;
import org.apache.jena.atlas.data.ThresholdPolicyFactory ;
+import org.apache.jena.atlas.lib.InternalErrorException ;
import org.apache.jena.query.SortCondition ;
import org.apache.jena.riot.system.SerializationFactoryFinder ;
import org.apache.jena.sparql.engine.ExecutionContext ;
import org.apache.jena.sparql.engine.QueryIterator ;
import org.apache.jena.sparql.engine.binding.Binding ;
import org.apache.jena.sparql.engine.binding.BindingComparator ;
+import org.apache.jena.sparql.engine.binding.BindingProjectNamed ;
/**
* A QueryIterator that suppresses items already seen. This will stream results
- * until the spill to disk threshold is passed. At that point, it will not
- * return any results until the input iterator has been exhausted.
+ * until a threshold is passed. At that point, it will fill a disk-backed
+ * {@link DistinctDataNet}, then yield
+ * not return any results until the input iterator has been exhausted.
*
* @see DistinctDataNet
*/
-public class QueryIterDistinct extends QueryIterDistinctReduced
+public class QueryIterDistinct extends QueryIter1
{
- final DistinctDataNet<Binding> db ;
+ private int Threshold1 = 3 ;
+ private DistinctDataNet<Binding> db = null ;
+ private Iterator<Binding> iterator = null ;
+ private Set<Binding> seen = new HashSet<>() ;
+ private Binding slot = null ;
- public QueryIterDistinct(QueryIterator qIter, ExecutionContext context)
- {
+ public QueryIterDistinct(QueryIterator qIter, ExecutionContext context) {
super(qIter, context) ;
- ThresholdPolicy<Binding> policy = ThresholdPolicyFactory.policyFromContext(context.getContext()) ;
- Comparator<Binding> comparator = new BindingComparator(new ArrayList<SortCondition>(), context) ;
- this.db = BagFactory.newDistinctNet(policy, SerializationFactoryFinder.bindingSerializationFactory(), comparator) ;
+ }
+
+ public QueryIterDistinct(QueryIterator qIter, ExecutionContext context, int threshold1) {
+ super(qIter, context) ;
+ this.Threshold1 = threshold1 ;
}
@Override
- protected void closeSubIterator()
- { db.close() ; }
+ protected boolean hasNextBinding() {
+ if ( slot != null )
+ return true ;
+ if ( iterator != null )
+ // Databag active.
+ return iterator.hasNext() ;
+
+ // At this point, we are currently in the initial pre-threshold mode.
+ if ( seen.size() >= Threshold1 ) {
+ Binding b = getInputNextUnseen() ;
+ if ( b == null )
+ return false ;
+ seen.add(b) ;
+ slot = b ;
+ return true ;
+ }
+
+ // Hit the threashold.
+ loadDataBag() ;
+ // Switch to iterating from the databad.
+ iterator = db.iterator() ;
+ // Leave slot null.
+ return iterator.hasNext() ;
+ }
+
+ private void loadDataBag() {
+ ThresholdPolicy<Binding> policy = ThresholdPolicyFactory.policyFromContext(super.getExecContext().getContext()) ;
+ Comparator<Binding> comparator = new BindingComparator(new ArrayList<SortCondition>(), super.getExecContext()) ;
+ this.db = BagFactory.newDistinctNet(policy, SerializationFactoryFinder.bindingSerializationFactory(), comparator) ;
+ for(;;) {
+ Binding b = getInputNextUnseen() ;
+ if ( b == null )
+ break ;
+ db.add(b) ;
+ }
+ }
+
+ // Return the next binding from the input filtered by seen.
+ // This does not update seen.
+ // Returns null on end of input.
+ private Binding getInputNextUnseen() {
+ while( getInput().hasNext() ) {
+ Binding b = getInputNext() ;
+ if ( seen.contains(b) )
+ continue ;
+ return b ;
+ }
+ return null ;
+ }
+
+ // Return the next wrapped binding from the input.
+ private Binding getInputNext() {
+ Binding b = getInput().next() ;
+ // Hide unnamed and internal variables.
+ b = new BindingProjectNamed(b) ;
+ return b ;
+ }
@Override
- protected void requestSubCancel()
- { db.close() ; }
+ protected Binding moveToNextBinding() {
+ if ( slot != null ) {
+ Binding b = slot ;
+ slot = null ;
+ return b ;
+ }
+ if ( iterator != null ) {
+ Binding b = iterator.next() ;
+ return b ;
+ }
+ throw new InternalErrorException() ;
+ }
@Override
- protected boolean isFreshSighting(Binding binding)
- {
- return db.netAdd(binding) ;
+ protected void closeSubIterator() {
+ if ( db != null ) {
+ iterator = null ;
+ db.close() ;
+ }
+ db = null ;
}
+
+ @Override
+ protected void requestSubCancel()
+ { super.close(); }
+
}
http://git-wip-us.apache.org/repos/asf/jena/blob/8b2ed199/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinctMem.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinctMem.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinctMem.java
index 1b09108..78929b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinctMem.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterDistinctMem.java
@@ -45,6 +45,9 @@ public class QueryIterDistinctMem extends QueryIterDistinctReduced
@Override
protected boolean isFreshSighting(Binding binding)
{
- return seen.contains(binding) ;
+ if ( seen.contains(binding) )
+ return false ;
+ seen.add(binding) ;
+ return true ;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/jena/blob/8b2ed199/jena-arq/src/test/java/org/apache/jena/sparql/engine/TS_Engine.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/TS_Engine.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/TS_Engine.java
index d607c9a..889acf9 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/engine/TS_Engine.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/TS_Engine.java
@@ -21,7 +21,7 @@ package org.apache.jena.sparql.engine;
import org.apache.jena.sparql.engine.binding.TestBindingStreams ;
import org.apache.jena.sparql.engine.http.TestQueryEngineHTTP ;
import org.apache.jena.sparql.engine.http.TestService ;
-import org.apache.jena.sparql.engine.iterator.TestQueryIterSort ;
+import org.apache.jena.sparql.engine.iterator.TS_QueryIterators ;
import org.junit.runner.RunWith ;
import org.junit.runners.Suite ;
@@ -29,7 +29,7 @@ import org.junit.runners.Suite ;
@Suite.SuiteClasses( {
TestBindingStreams.class
, TestTableLib.class
- , TestQueryIterSort.class
+ , TS_QueryIterators.class
, TestService.class
, TestQueryEngineHTTP.class
, TestQueryEngineMultiThreaded.class
[3/5] jena git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/jena
Posted by an...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/jena
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/dba79753
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/dba79753
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/dba79753
Branch: refs/heads/master
Commit: dba79753228776099b23e70bcccb481666f5f9c0
Parents: cc6df92 86e0dd8
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 08:40:46 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 08:40:46 2015 +0100
----------------------------------------------------------------------
.../src/main/java/org/apache/jena/vocabulary/DC_10.java | 5 ++++-
jena-core/src/main/java/org/apache/jena/vocabulary/RDF.java | 5 ++++-
jena-core/src/main/java/org/apache/jena/vocabulary/RDFS.java | 5 ++++-
.../src/main/java/org/apache/jena/vocabulary/RDFSyntax.java | 6 ++++--
jena-core/src/main/java/org/apache/jena/vocabulary/RSS.java | 5 ++++-
jena-core/src/main/java/org/apache/jena/vocabulary/SKOS.java | 2 +-
.../src/main/java/org/apache/jena/vocabulary/SKOSXL.java | 2 +-
.../src/main/java/org/apache/jena/vocabulary/VCARD.java | 5 ++++-
jena-core/src/main/java/org/apache/jena/vocabulary/XSD.java | 8 ++++++--
9 files changed, 32 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
[5/5] jena git commit: Merge branch 'jena949-distinct'
Posted by an...@apache.org.
Merge branch 'jena949-distinct'
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/cb18f748
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/cb18f748
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/cb18f748
Branch: refs/heads/master
Commit: cb18f7482309dd457c669ee47fba2d0127573a2f
Parents: dba7975 40f1c8b
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jun 2 08:43:37 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jun 2 08:43:37 2015 +0100
----------------------------------------------------------------------
.../engine/iterator/QueryIterDistinct.java | 116 ++++++++++++++++---
.../engine/iterator/QueryIterDistinctMem.java | 5 +-
.../apache/jena/sparql/engine/TS_Engine.java | 4 +-
.../iterator/AbstractTestDistinctReduced.java | 108 +++++++++++++++++
.../engine/iterator/TS_QueryIterators.java | 33 ++++++
.../engine/iterator/TestDistinctDataBag.java | 40 +++++++
.../sparql/engine/iterator/TestDistinctMem.java | 37 ++++++
7 files changed, 322 insertions(+), 21 deletions(-)
----------------------------------------------------------------------