1 package com.daffodilwoods.daffodildb.server.sessionsystem; 2 3 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 4 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._Table; 5 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression._SingleTableExecuter; 6 import com.daffodilwoods.database.resource.DException; 7 import com.daffodilwoods.database.general.QualifiedIdentifier; 8 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexTable; 9 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession; 10 import com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition._SessionCondition; 11 import com.daffodilwoods.daffodildb.server.datasystem.mergesystem.MergeTable; 12 13 21 22 public class SessionSerializableDataRetriever extends DataRetrieverWithoutCondition implements _DataRetriever { 23 24 Session session; 25 public SessionSerializableDataRetriever(Session session) { 26 this.session = session; 27 } 28 29 public _Iterator getIterator(_Table mergeTable, _SingleTableExecuter singleTableExecuter, _ServerSession serverSession, QualifiedIdentifier tableName, ForUpdateTableHandler forUpdateTableHandler) throws DException{ 30 return getConditionalIterator(mergeTable,singleTableExecuter,serverSession,tableName,forUpdateTableHandler); 31 } 32 33 public _Iterator getConditionalIterator(_Table mergeTable, _SingleTableExecuter singleTableExecuter, _ServerSession serverSession, QualifiedIdentifier tableName, ForUpdateTableHandler forUpdateTableHandler) throws DException{ 34 SessionIndex sessionIndex = new SessionIndex((_IndexTable)mergeTable, serverSession); 35 _Iterator iterator = singleTableExecuter.execute(sessionIndex); 36 _SessionCondition sessionCondition = ((Session)session).getTransactionSessionCondition( ); 37 return new RowIdSessionIterator( new NonIndexedSessionFilterIterator(iterator,sessionCondition) ,sessionCondition); 38 } 39 40 41 public _Iterator getFCIterator(_Table mergeTable, 42 QualifiedIdentifier tableName, 43 _SingleTableExecuter conditionExecuter, 44 _IndexTable foreignConstraintTable ) 45 throws DException{ 46 SessionIndex sessionIndex = new SessionIndex((_IndexTable)mergeTable, ((_SessionGetter)foreignConstraintTable).getServerSession()); 47 _Iterator iterator = conditionExecuter.execute(sessionIndex ); 48 _SessionCondition sessionCondition = ((Session)session).getTransactionSessionCondition( ); 49 _Iterator baseIterator = new NonIndexedSessionFilterIterator(iterator,sessionCondition); 50 _Iterator fcIterator = ((ForeignConstraintTable)foreignConstraintTable).getIterator(baseIterator); 51 return new RowIdSessionIterator( fcIterator ,sessionCondition); 52 } 53 54 } 55 | Popular Tags |