[Mulgara-svn] r441 - in trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational: . d2rq

ronald at mulgara.org ronald at mulgara.org
Wed Sep 19 09:39:48 UTC 2007


Author: ronald
Date: 2007-09-19 04:39:47 -0500 (Wed, 19 Sep 2007)
New Revision: 441

Modified:
   trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
   trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java
Log:
Fixes some more unclosed-tuples leaks. This is a continuation of the fixes in
r389.


Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java	2007-09-19 09:37:15 UTC (rev 440)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java	2007-09-19 09:39:47 UTC (rev 441)
@@ -292,20 +292,23 @@
       throw new TuplesException("RelationalResolution does not support suffix != 0");
     }
 
-    List result = new ArrayList();
     Iterator i = constraint.getRdfTypeConstraints().iterator();
     if (!i.hasNext()) {
       this.result = new EmptyResolution(constraint, true);
     } else {
-      while (i.hasNext()) {
-        Constraint head = (Constraint)i.next();
-        
-        result.add(resolveInstance(head, constraint, conn, defn));
+      List result = new ArrayList();
+      try {
+        while (i.hasNext()) {
+          Constraint head = (Constraint)i.next();
+          result.add(resolveInstance(head, constraint, conn, defn));
+        }
+
+        this.result = TuplesOperations.join(result);
+      } finally {
+        close((Tuples[]) result.toArray(new Tuples[result.size()]));
       }
     }
 
-    
-    this.result = TuplesOperations.join(result);
     // It is possible that the join may have no variables but only if the query returns empty.
     if (this.result.getRowCardinality() != Cursor.ZERO) {
       Variable[] local = this.getVariables();

Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java	2007-09-19 09:37:15 UTC (rev 440)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java	2007-09-19 09:39:47 UTC (rev 441)
@@ -129,9 +129,15 @@
 
     LocalNode belongs = new LocalNode(session.localize(Constants.belongsToClassMap));
     LocalNode propBridge = new LocalNode(session.localize(Constants.TypeObjectPropertyBridge));
-    Tuples props = TuplesOperations.join(
-      resolver.resolve(new ConstraintImpl(subj, belongs, map, model)),
-      resolver.resolve(new ConstraintImpl(subj, type, propBridge, model)));
+    Tuples lhs = resolver.resolve(new ConstraintImpl(subj, belongs, map, model));
+    Tuples rhs = resolver.resolve(new ConstraintImpl(subj, type, propBridge, model));
+    Tuples props;
+    try {
+      props = TuplesOperations.join(lhs, rhs);
+    } finally {
+      lhs.close();
+      rhs.close();
+    }
     props.beforeFirst();
     while (props.next()) {
       long prop = props.getColumnValue(0);
@@ -152,9 +158,15 @@
 
     LocalNode belongs = new LocalNode(session.localize(Constants.belongsToClassMap));
     LocalNode propBridge = new LocalNode(session.localize(Constants.TypeDatatypePropertyBridge));
-    Tuples props = TuplesOperations.join(
-      resolver.resolve(new ConstraintImpl(subj, belongs, map, model)),
-      resolver.resolve(new ConstraintImpl(subj, type, propBridge, model)));
+    Tuples lhs = resolver.resolve(new ConstraintImpl(subj, belongs, map, model));
+    Tuples rhs = resolver.resolve(new ConstraintImpl(subj, type, propBridge, model));
+    Tuples props;
+    try {
+      props = TuplesOperations.join(lhs, rhs);
+    } finally {
+      lhs.close();
+      rhs.close();
+    }
     props.beforeFirst();
     while (props.next()) {
       long prop = props.getColumnValue(0);




More information about the Mulgara-svn mailing list