From 30eb9314a4076c6adc06b348556650297b2b9283 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Fri, 26 Jan 2018 13:53:05 +0000 Subject: [PATCH] JENA-1468: Writing vars when table empty --- .../org/apache/jena/sparql/algebra/table/TableBase.java | 2 ++ .../org/apache/jena/sparql/algebra/table/TableEmpty.java | 4 ++++ .../org/apache/jena/sparql/algebra/table/TableUnit.java | 9 ++++----- .../org/apache/jena/sparql/sse/writers/WriterOp.java | 9 ++++++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableBase.java index 1dfdc29e388..739fa957ae6 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableBase.java @@ -106,6 +106,8 @@ public boolean equals(Object other) { Table table = (Table)other ; if ( table.size() != this.size() ) return false ; + if ( !table.getVars().equals(getVars()) ) + return false ; QueryIterator qIter1 = iterator(null) ; QueryIterator qIter2 = table.iterator(null) ; try { diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableEmpty.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableEmpty.java index eaf6336e585..2640db0f3d9 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableEmpty.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableEmpty.java @@ -23,6 +23,7 @@ import java.util.List ; import org.apache.jena.atlas.iterator.Iter ; +import org.apache.jena.sparql.algebra.Table; import org.apache.jena.sparql.core.Var ; import org.apache.jena.sparql.engine.ExecutionContext ; import org.apache.jena.sparql.engine.QueryIterator ; @@ -31,6 +32,9 @@ public class TableEmpty extends TableBase { + static public boolean isTableEmpty(Table table) + { return (table instanceof TableEmpty) ; } + public TableEmpty() { } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableUnit.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableUnit.java index 5eb139d8691..1eb6f370878 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableUnit.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableUnit.java @@ -18,7 +18,7 @@ package org.apache.jena.sparql.algebra.table; -import java.util.ArrayList ; +import java.util.Collections; import java.util.Iterator ; import java.util.List ; @@ -35,7 +35,7 @@ public class TableUnit extends TableBase { static public boolean isTableUnit(Table table) { return (table instanceof TableUnit) ; } - + public TableUnit() {} @Override @@ -61,10 +61,9 @@ public void closeTable() { } public boolean isEmpty() { return false ; } @Override - public List getVarNames() { return new ArrayList<>() ; } - + public List getVarNames() { return Collections.emptyList(); } @Override - public List getVars() { return new ArrayList<>() ; } + public List getVars() { return Collections.emptyList(); } @Override public String toString() { return "TableUnit" ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/sse/writers/WriterOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/sse/writers/WriterOp.java index f78f2776175..c8ff3087b32 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/sse/writers/WriterOp.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/sse/writers/WriterOp.java @@ -32,6 +32,7 @@ import org.apache.jena.sparql.algebra.OpPrefixesUsed ; import org.apache.jena.sparql.algebra.OpVisitor ; import org.apache.jena.sparql.algebra.op.* ; +import org.apache.jena.sparql.algebra.table.TableEmpty; import org.apache.jena.sparql.algebra.table.TableUnit ; import org.apache.jena.sparql.core.* ; import org.apache.jena.sparql.expr.Expr ; @@ -349,7 +350,7 @@ public void visit(OpTable opTable) { return ; } - if ( opTable.getTable().isEmpty() ) { + if ( TableEmpty.isTableEmpty(opTable.getTable()) ) { start(opTable, NoNL) ; out.print("empty") ; finish(opTable) ; @@ -358,8 +359,10 @@ public void visit(OpTable opTable) { start(opTable, NoNL) ; WriterNode.outputVars(out, opTable.getTable().getVars(), sContext) ; - out.println() ; - WriterTable.outputPlain(out, opTable.getTable(), sContext) ; + if ( ! opTable.getTable().isEmpty() ) { + out.println(); + WriterTable.outputPlain(out, opTable.getTable(), sContext) ; + } finish(opTable) ; }