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 2018/01/30 11:18:39 UTC

[1/5] jena git commit: JENA-1468: Writing vars when table empty

Repository: jena
Updated Branches:
  refs/heads/master e2194a631 -> 6228bbc16


JENA-1468: Writing vars when table empty


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/30eb9314
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/30eb9314
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/30eb9314

Branch: refs/heads/master
Commit: 30eb9314a4076c6adc06b348556650297b2b9283
Parents: 94eb3fc
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jan 26 13:53:05 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jan 26 13:53:05 2018 +0000

----------------------------------------------------------------------
 .../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 ++++-----
 .../java/org/apache/jena/sparql/sse/writers/WriterOp.java   | 9 ++++++---
 4 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/30eb9314/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableBase.java
----------------------------------------------------------------------
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 1dfdc29..739fa95 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 abstract class TableBase implements Table {
         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 {

http://git-wip-us.apache.org/repos/asf/jena/blob/30eb9314/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableEmpty.java
----------------------------------------------------------------------
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 eaf6336..2640db0 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.Iterator ;
 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 @@ import org.apache.jena.sparql.engine.iterator.QueryIterNullIterator ;
 
 public class TableEmpty extends TableBase
 {
+    static public boolean isTableEmpty(Table table)
+    { return (table instanceof TableEmpty) ; } 
+
     public TableEmpty()
     { }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/30eb9314/jena-arq/src/main/java/org/apache/jena/sparql/algebra/table/TableUnit.java
----------------------------------------------------------------------
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 5eb139d..1eb6f37 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 class TableUnit extends TableBase
     public boolean isEmpty()    { return false ; }
 
     @Override
-    public List<String> getVarNames()   { return new ArrayList<>() ; }
-
+    public List<String> getVarNames()   { return Collections.emptyList(); }
     @Override
-    public List<Var> getVars()       { return new ArrayList<>() ; }
+    public List<Var> getVars()          { return Collections.emptyList(); }
     
     @Override
     public String toString()    { return "TableUnit" ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/30eb9314/jena-arq/src/main/java/org/apache/jena/sparql/sse/writers/WriterOp.java
----------------------------------------------------------------------
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 f78f277..c8ff308 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.Op ;
 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 class WriterOp
                 return ;
             }
 
-            if ( opTable.getTable().isEmpty() ) {
+            if ( TableEmpty.isTableEmpty(opTable.getTable()) ) {
                 start(opTable, NoNL) ;
                 out.print("empty") ;
                 finish(opTable) ;
@@ -358,8 +359,10 @@ public class WriterOp
 
             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) ;
         }
 


[4/5] jena git commit: JENA-1468: Merge commit 'refs/pull/345/head' of github.com:apache/jena

Posted by an...@apache.org.
JENA-1468: Merge commit 'refs/pull/345/head' of github.com:apache/jena

This closes #345.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ebb10888
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ebb10888
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ebb10888

Branch: refs/heads/master
Commit: ebb10888c430686fa79a15900c9e4869aa2c41d4
Parents: e2194a6 2586abf
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jan 30 10:56:39 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jan 30 10:56:39 2018 +0000

----------------------------------------------------------------------
 .../jena/sparql/algebra/table/TableBase.java    |  2 +
 .../jena/sparql/algebra/table/TableEmpty.java   |  4 ++
 .../jena/sparql/algebra/table/TableUnit.java    |  9 ++-
 .../jena/sparql/sse/writers/WriterOp.java       |  9 ++-
 .../apache/jena/sparql/algebra/TS_Algebra.java  |  3 +-
 .../jena/sparql/algebra/TestOpAsQuery.java      | 26 +++++++-
 .../apache/jena/sparql/algebra/TestTable.java   | 68 ++++++++++++++++++++
 .../algebra/optimize/TestTransformFilters.java  |  2 +-
 8 files changed, 110 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[5/5] jena git commit: JENA-1469: Merge commit 'refs/pull/346/head' of github.com:apache/jena

Posted by an...@apache.org.
JENA-1469: Merge commit 'refs/pull/346/head' of github.com:apache/jena

This closes #346.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6228bbc1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6228bbc1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6228bbc1

Branch: refs/heads/master
Commit: 6228bbc166f6a353dbe135e41686a15f56218508
Parents: ebb1088 fb17239
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Jan 30 10:57:36 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Jan 30 10:57:36 2018 +0000

----------------------------------------------------------------------
 .../transaction/AbstractTestTransPromote.java   | 26 ++++-----
 .../AbstractTestTransactionLifecycle.java       | 24 +++++++-
 .../tdb/transaction/TransactionManager.java     | 59 ++++++++++++--------
 3 files changed, 72 insertions(+), 37 deletions(-)
----------------------------------------------------------------------



[3/5] jena git commit: JENA-1469: Adjust internal tracking state across promotion

Posted by an...@apache.org.
JENA-1469: Adjust internal tracking state across promotion


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/fb172399
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/fb172399
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/fb172399

Branch: refs/heads/master
Commit: fb172399ff2181a8f5f82e5988424defdf38da67
Parents: 3ac175b
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Jan 27 17:11:22 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Jan 27 17:11:22 2018 +0000

----------------------------------------------------------------------
 .../transaction/AbstractTestTransPromote.java   | 26 ++++-----
 .../AbstractTestTransactionLifecycle.java       | 24 +++++++-
 .../tdb/transaction/TransactionManager.java     | 59 ++++++++++++--------
 3 files changed, 72 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/fb172399/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
index 9134668..1ca1379 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransPromote.java
@@ -244,18 +244,6 @@ public abstract class AbstractTestTransPromote {
         }) ;
     }
 
-    @Test
-    public void promote_10() { promote_readCommit_txnCommit(TxnType.READ_COMMITTED_PROMOTE, true) ; }
-
-    @Test
-    public void promote_11() { promote_readCommit_txnCommit(TxnType.READ_COMMITTED_PROMOTE, false) ; }
-    
-    @Test
-    public void promote_12() { 
-        expect(()->promote_readCommit_txnCommit(TxnType.READ_PROMOTE, true) ,
-               getTransactionExceptionClass()) ;
-    }
-    
     @SafeVarargs
     private final void expect(Runnable runnable, Class<? extends Exception>...classes) {
         try {
@@ -271,6 +259,18 @@ public abstract class AbstractTestTransPromote {
     }
 
     @Test
+    public void promote_10() { promote_readCommit_txnCommit(TxnType.READ_COMMITTED_PROMOTE, true) ; }
+
+    @Test
+    public void promote_11() { promote_readCommit_txnCommit(TxnType.READ_COMMITTED_PROMOTE, false) ; }
+    
+    @Test
+    public void promote_12() { 
+        expect(()->promote_readCommit_txnCommit(TxnType.READ_PROMOTE, true) ,
+               getTransactionExceptionClass()) ;
+    }
+    
+    @Test
     public void promote_13() { promote_readCommit_txnCommit(TxnType.READ_PROMOTE, false) ; }
 
     private void promote_readCommit_txnCommit(TxnType txnType, boolean asyncCommit) {
@@ -388,7 +388,7 @@ public abstract class AbstractTestTransPromote {
         } catch (InterruptedException | ExecutionException e1) { throw new RuntimeException(e1) ; }
     }
     
-    // This would locks up because of a WRITE-WRITE deadly embrace.
+    // This would lock up because of a WRITE-WRITE deadly embrace.
     //  @Test(expected=JenaTransactionException.class)
     //  public void promote11() { test2(TxnMode.WRITE); }
       

http://git-wip-us.apache.org/repos/asf/jena/blob/fb172399/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionLifecycle.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionLifecycle.java b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionLifecycle.java
index c1043b8..ec80425 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionLifecycle.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionLifecycle.java
@@ -235,6 +235,17 @@ public abstract class AbstractTestTransactionLifecycle extends BaseTest
         ds.end();
     }
     
+    // JENA-1469
+    @Test
+    public void transaction_p06() {
+        transaction_promote_write(TxnType.READ_COMMITTED_PROMOTE);
+    }
+
+    @Test
+    public void transaction_p07() {
+        transaction_promote_write(TxnType.READ_PROMOTE);
+    }
+
     @Test(expected=JenaException.class)
     public void transaction_err_read_promote() {
         assumeTrue(supportsPromote()) ;
@@ -245,9 +256,18 @@ public abstract class AbstractTestTransactionLifecycle extends BaseTest
         ds.commit();
         ds.end();
     }
-    
-    // XXX READ_PROMOTE -> update -> fail promote/boolean. 
 
+    private void transaction_promote_write(TxnType txnType) {
+        Dataset ds = create() ;
+        ds.begin(txnType);
+        ds.promote();
+        ds.commit();
+        ds.end();
+        ds.begin(TxnType.WRITE);
+        ds.commit();
+        ds.end(); 
+    }
+    
     // Patterns.
     @Test
     public void transaction_pattern_01() {

http://git-wip-us.apache.org/repos/asf/jena/blob/fb172399/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
index 10e8b44..e9c4797 100644
--- a/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
+++ b/jena-tdb/src/main/java/org/apache/jena/tdb/transaction/TransactionManager.java
@@ -163,7 +163,7 @@ public class TransactionManager
         void transactionCloses(Transaction txn) ;
         void readerStarts(Transaction txn) ;
         void readerFinishes(Transaction txn) ;
-        void transactionPromotes(Transaction txn) ;
+        void transactionPromotes(Transaction txnOld, Transaction txnNew) ;
         void writerStarts(Transaction txn) ;
         void writerCommits(Transaction txn) ;
         void writerAborts(Transaction txn) ;
@@ -175,7 +175,7 @@ public class TransactionManager
         @Override public void transactionCloses(Transaction txn)    {}
         @Override public void readerStarts(Transaction txn)         {}
         @Override public void readerFinishes(Transaction txn)       {}
-        @Override public void transactionPromotes(Transaction txn)  {}
+        @Override public void transactionPromotes(Transaction txnOld, Transaction txnNew) {}
         @Override public void writerStarts(Transaction txn)         {}
         @Override public void writerCommits(Transaction txn)        {}
         @Override public void writerAborts(Transaction txn)         {}
@@ -185,7 +185,8 @@ public class TransactionManager
         TSM_Logger() {}
         @Override public void readerStarts(Transaction txn)         { log("start", txn) ; }
         @Override public void readerFinishes(Transaction txn)       { log("finish", txn) ; }
-        @Override public void transactionPromotes(Transaction txn)  { log("promote", txn) ; }
+        @Override public void transactionPromotes(Transaction txnOld, Transaction txnNew)
+        { log("promote(old)", txnOld) ; log("promote(new)", txnNew) ; }  
         @Override public void writerStarts(Transaction txn)         { log("begin", txn) ; }
         @Override public void writerCommits(Transaction txn)        { log("commit", txn) ; }
         @Override public void writerAborts(Transaction txn)         { log("abort", txn) ; }
@@ -196,7 +197,8 @@ public class TransactionManager
         TSM_LoggerDebug() {}
         @Override public void readerStarts(Transaction txn)         { logInternal("start",  txn) ; }
         @Override public void readerFinishes(Transaction txn)       { logInternal("finish", txn) ; }
-        @Override public void transactionPromotes(Transaction txn)  { logInternal("promote", txn) ; }
+        @Override public void transactionPromotes(Transaction txnOld, Transaction txnNew)
+        { logInternal("promote(old)", txnOld) ; logInternal("promote(new)", txnNew) ; }  
         @Override public void writerStarts(Transaction txn)         { logInternal("begin",  txn) ; }
         @Override public void writerCommits(Transaction txn)        { logInternal("commit", txn) ; }
         @Override public void writerAborts(Transaction txn)         { logInternal("abort",  txn) ; }
@@ -209,7 +211,10 @@ public class TransactionManager
         @Override public void transactionCloses(Transaction txn)    { }
         @Override public void readerStarts(Transaction txn)         { inc(activeReaders) ; }
         @Override public void readerFinishes(Transaction txn)       { dec(activeReaders) ; inc(finishedReaders); }
-        @Override public void transactionPromotes(Transaction txn)  { dec(activeReaders) ; inc(finishedReaders); inc(activeWriters); }
+        
+        @Override public void transactionPromotes(Transaction txnOld, Transaction txnNew)
+        { dec(activeReaders) ; inc(finishedReaders); inc(activeWriters); }
+        
         @Override public void writerStarts(Transaction txn)         { inc(activeWriters) ; }
         @Override public void writerCommits(Transaction txn)        { dec(activeWriters) ; inc(committedWriters) ; }
         @Override public void writerAborts(Transaction txn)         { dec(activeWriters) ; inc(abortedWriters) ; }
@@ -236,6 +241,12 @@ public class TransactionManager
         
         // Currently, the writer semaphore is managed explicitly in the main code.
         
+        @Override public void transactionPromotes(Transaction txnOld, Transaction txnNew) {
+            // Switch locks.
+            txnOld.getBaseDataset().getLock().leaveCriticalSection() ;
+            txnNew.getBaseDataset().getLock().enterCriticalSection(Lock.READ) ;
+        }
+        
         @Override
         public void readerFinishes(Transaction txn) {
             txn.getBaseDataset().getLock().leaveCriticalSection() ;
@@ -342,7 +353,9 @@ public class TransactionManager
             acquireWriterLock(true) ;
         }
         // entry synchronized part
-        return begin$(txnType, originalTxnType, label) ;
+        DatasetGraphTxn dsgtxn = begin$(txnType, originalTxnType, label) ;
+        noteTxnStart(dsgtxn.getTransaction()) ;
+        return dsgtxn;
     }
     
     /** Ensure a DatasetGraphTxn is for a write transaction.
@@ -377,11 +390,9 @@ public class TransactionManager
         // Can also promote - may need to wait for active writers. 
         // Go through begin for the writers lock. 
         if ( txnType == TxnType.READ_COMMITTED_PROMOTE ) {
-            // Full begin cycle.
-            DatasetGraphTxn dsgtxn2 = beginInternal(TxnType.WRITE, txnType, txn.getLabel()) ;
-            // Junk the old one.
-            noteTxnPromote(txn, dsgtxn2.getTransaction());
-            return dsgtxn2 ;
+            acquireWriterLock(true);
+            // No need to sync - we just queue as a writer.
+            return promoteExec$(dsgtxn, txnType);
         }
         
         // First check, without the writer lock. Fast fail.
@@ -402,25 +413,31 @@ public class TransactionManager
         // Potentially blocking - must be outside 'synchronized' so that any active writer
         // can commit/abort.  Otherwise, we have deadlock.
         acquireWriterLock(true) ;
-
         // Do the synchronized stuff.
-        return promote2$(dsgtxn, txnType) ; 
+        return promoteSync$(dsgtxn, txnType) ; 
     }
     
     synchronized
-    private DatasetGraphTxn promote2$(DatasetGraphTxn dsgtxn, TxnType originalTxnType) {
+    private DatasetGraphTxn promoteSync$(DatasetGraphTxn dsgtxn, TxnType originalTxnType) {
         Transaction txn = dsgtxn.getTransaction() ;
         // Writers may have happened between the first check of the active writers may have committed.  
         if ( txn.getVersion() != version.get() ) {
             releaseWriterLock();
             return null;
         }
-        // Use begin$ (not beginInternal) - we have the writers lock.
+        return promoteExec$(dsgtxn, originalTxnType);
+    }
+    
+    private DatasetGraphTxn promoteExec$(DatasetGraphTxn dsgtxn, TxnType originalTxnType) {
+        // Use begin$ (not beginInternal)
+        // We have the writers lock.
+        // We keep the exclusivity lock.
+        Transaction txn = dsgtxn.getTransaction() ;
         DatasetGraphTxn dsgtxn2 = begin$(TxnType.WRITE, originalTxnType, txn.getLabel()) ;
         noteTxnPromote(txn, dsgtxn2.getTransaction());
         return dsgtxn2 ;
     }
-
+    
     // If DatasetGraphTransaction has a sync lock on sConn, this
     // does not need to be sync'ed. But it's possible to use some
     // of the low level objects directly so we'll play safe.  
@@ -450,6 +467,7 @@ public class TransactionManager
         txn.setActiveDataset(dsgTxn) ;
 
         // Empty for READ ; only WRITE transactions have components that need notifying.
+        // Promote is a WRITE transaction starting.
         List<TransactionLifecycle> components = dsgTxn.getTransaction().lifecycleComponents() ;
         
         if ( mode == ReadWrite.READ ) {
@@ -460,8 +478,6 @@ public class TransactionManager
         
         for ( TransactionLifecycle component : components )
             component.begin(dsgTxn.getTransaction()) ;
-
-        noteTxnStart(txn) ;
         return dsgTxn ;
     }
     
@@ -870,10 +886,9 @@ public class TransactionManager
     private void noteTxnPromote(Transaction transaction, Transaction transaction2) {
         activeTransactions.remove(transaction);
         activeTransactions.add(transaction2);
-        transactionPromotes(transaction) ;
+        transactionPromotes(transaction, transaction2) ;
     }
 
-
     private void noteTxnCommit(Transaction transaction) {
         switch (transaction.getTxnMode())
         {
@@ -1011,10 +1026,10 @@ public class TransactionManager
                 tsm.readerFinishes(txn) ;
     }
     
-    private void transactionPromotes(Transaction txn) {
+    private void transactionPromotes(Transaction txnOld, Transaction txnNew) {
         for ( TSM tsm : actions )
             if ( tsm != null )
-                tsm.transactionPromotes(txn);
+                tsm.transactionPromotes(txnOld, txnNew);
     }
 
     private void writerStarts(Transaction txn) {


[2/5] jena git commit: JENA-1468: Tests

Posted by an...@apache.org.
JENA-1468: Tests


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2586abf0
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2586abf0
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2586abf0

Branch: refs/heads/master
Commit: 2586abf09751fd962ca7afe25d4ab3d9431ce716
Parents: 30eb931
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jan 26 13:53:17 2018 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Jan 27 13:49:43 2018 +0000

----------------------------------------------------------------------
 .../apache/jena/sparql/algebra/TS_Algebra.java  |  3 +-
 .../jena/sparql/algebra/TestOpAsQuery.java      | 26 +++++++-
 .../apache/jena/sparql/algebra/TestTable.java   | 68 ++++++++++++++++++++
 .../algebra/optimize/TestTransformFilters.java  |  2 +-
 4 files changed, 94 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2586abf0/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TS_Algebra.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TS_Algebra.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TS_Algebra.java
index eaa9fe4..0e34dba 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TS_Algebra.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TS_Algebra.java
@@ -24,7 +24,8 @@ import org.junit.runners.Suite ;
 @RunWith(Suite.class)
 @Suite.SuiteClasses( {
     // This package
-    TestAlgebraTranslate.class
+    TestTable.class
+    , TestAlgebraTranslate.class
     , TestClassify.class
     , TestOpAsQuery.class
     , TestOpVars.class

http://git-wip-us.apache.org/repos/asf/jena/blob/2586abf0/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestOpAsQuery.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestOpAsQuery.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestOpAsQuery.java
index 24169d5..2033ba8 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestOpAsQuery.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestOpAsQuery.java
@@ -390,6 +390,25 @@ public class TestOpAsQuery {
     }
     
     @Test
+    public void testTable1() {
+        String query = "SELECT * WHERE { ?x ?p ?z . VALUES ?y { } }" ;
+        roundTripQuery(query);
+    }
+    
+    @Test
+    public void testTable2() {
+        // JENA-1468 : op to string and back.
+        String qs = "SELECT * WHERE { ?x ?p ?z . VALUES ?y { } }" ;
+        Query query = QueryFactory.create(qs); 
+        Op op = Algebra.compile(query);
+        String x = op.toString();
+        Op op1 = SSE.parseOp(x);
+        Query query2 = OpAsQuery.asQuery(op1);
+        assertEquals(query, query2);
+    }
+    
+
+    @Test
     public void testValues1() {
         String query = "SELECT  * { VALUES ?x {1 2} ?s ?p ?x }" ;
         test_roundTripQuery(query) ;
@@ -443,6 +462,7 @@ public class TestOpAsQuery {
     
     // Test for queries that do query->algebra->OpAsQuery->query
     // to produce an output that is .equals the input.
+    /** query->algebra->OpAsQuery->query */
     public static Query[] test_roundTripQuery(String query) {
         Query[] r = roundTripQuery(query) ;
         stripNamespacesAndBase(r[0]) ; 
@@ -471,7 +491,7 @@ public class TestOpAsQuery {
         Assert.assertEquals(a1, a2);
     }
     
-    // algebra->OpAsQuery->query
+    /** algebra->OpAsQuery->query */
     public static void test_AlgebraToQuery(String input, String expected) {
         Op op = SSE.parseOp(input) ;
         Query orig = QueryFactory.create(expected, Syntax.syntaxSPARQL_11);
@@ -480,7 +500,7 @@ public class TestOpAsQuery {
         Assert.assertEquals(orig, got) ;
     }
 
-    // query->algebra->OpAsQuery->query
+    /** query->algebra->OpAsQuery->query **/
     private static Query[] roundTripQuery(String query) {
         Query orig = QueryFactory.create(query, Syntax.syntaxSPARQL_11);
         Op toReconstruct = Algebra.compile(orig);
@@ -489,7 +509,7 @@ public class TestOpAsQuery {
         return r;
     }
     
-    // query->algebra/quads->OpAsQuery->query
+    /** query->algebra/quads->OpAsQuery->query */
     private static Query[] roundTripQueryQuad(String query) {
         Query orig = QueryFactory.create(query, Syntax.syntaxSPARQL_11);
         Op toReconstruct = Algebra.compile(orig);

http://git-wip-us.apache.org/repos/asf/jena/blob/2586abf0/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTable.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTable.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTable.java
new file mode 100644
index 0000000..5f647ce
--- /dev/null
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/TestTable.java
@@ -0,0 +1,68 @@
+/*
+ * 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.algebra;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.jena.atlas.io.IndentedLineBuffer;
+import org.apache.jena.sparql.algebra.op.OpTable;
+import org.apache.jena.sparql.core.Var;
+import org.apache.jena.sparql.engine.binding.Binding;
+import org.apache.jena.sparql.engine.binding.BindingFactory;
+import org.apache.jena.sparql.serializer.SerializationContext;
+import org.apache.jena.sparql.sse.writers.WriterOp;
+import org.junit.Test ;
+
+public class TestTable {
+    @Test public void table_01() {
+        Table table = TableFactory.createEmpty();
+        Op opTable = OpTable.create(table);
+        String x = str(opTable);
+        assertEquals("(table empty)",  x);
+    }
+
+    // JENA-1468: Table, no rows , with declared variables.
+    @Test public void table_02() {
+        Table table = TableFactory.create();
+        table.getVars().add(Var.alloc("a"));
+        Op opTable = OpTable.create(table);
+        String x = str(opTable);
+        assertEquals("(table (vars ?a))",  x);
+    }
+    
+    @Test public void table_03() {
+        Table table = TableFactory.create();
+        Binding b = BindingFactory.binding();
+        table.addBinding(b);
+        Op opTable = OpTable.create(table);
+        String x = str(opTable);
+        assertEquals("(table (vars) (row) )",  x);
+    }
+    
+    // String, no adornment
+    private static String str(Op op) {
+        SerializationContext sCxt = new SerializationContext();
+        IndentedLineBuffer out = new IndentedLineBuffer();
+        out.setFlatMode(true);
+        WriterOp.output(out, op, sCxt);
+        String x = out.asString();
+        return x.trim();
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/2586abf0/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
index a970f8e..41de9ee 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/algebra/optimize/TestTransformFilters.java
@@ -907,7 +907,7 @@ public class TestTransformFilters extends AbstractTestTransform
         // Tests use of multiple != conditions on same variable
         testOp("(filter ((!= ?x <x>) (!= ?x <y>)) (bgp ( ?s ?p ?x)) )",
                t_inequality,
-               "(minus (bgp (?s ?p ?x)) (table (vars ?p ?x) (row [?x <y>]) (row [?x <x>])))") ;
+               "(minus (bgp (?s ?p ?x)) (table (vars ?x) (row [?x <y>]) (row [?x <x>])))") ;
     }
 
     @Test public void inequality09() {