CmdInterpreter Class Reference

CmdInterpreter interprets command objects received via JNI from Farrago. More...

#include <CmdInterpreter.h>

Inheritance diagram for CmdInterpreter:

FemVisitor JniProxyVisitor List of all members.

Public Member Functions

virtual int64_t executeCommand (ProxyCmd &cmd)
 Interprets the given command object.
virtual void visit (ProxyAggInvocation &)
virtual void visit (ProxyAggStreamDef &)
virtual void visit (ProxyBarrierStreamDef &)
virtual void visit (ProxyBeginTxnCmd &)
virtual void visit (ProxyBernoulliSamplingStreamDef &)
virtual void visit (ProxyBufferReaderStreamDef &)
virtual void visit (ProxyBufferWriterStreamDef &)
virtual void visit (ProxyBufferingTupleStreamDef &)
virtual void visit (ProxyCalcTupleStreamDef &)
virtual void visit (ProxyCartesianProductStreamDef &)
virtual void visit (ProxyCmd &)
virtual void visit (ProxyCollectTupleStreamDef &)
virtual void visit (ProxyColumnName &)
virtual void visit (ProxyCorrelation &)
virtual void visit (ProxyCorrelationJoinStreamDef &)
virtual void visit (ProxyCsnHandle &)
virtual void visit (ProxyCsnHandleReturningCmd &)
virtual void visit (ProxyDatabaseCmd &)
virtual void visit (ProxyDatabaseParam &)
virtual void visit (ProxyDbHandle &)
virtual void visit (ProxyDynamicParamUse &)
virtual void visit (ProxyDynamicParameter &)
virtual void visit (ProxyEndTxnCmd &)
virtual void visit (ProxyExecStreamDataFlow &)
virtual void visit (ProxyExecutionStreamDef &)
virtual void visit (ProxyFlatFileTupleStreamDef &)
virtual void visit (ProxyGenericStreamDef &)
virtual void visit (ProxyHandle &)
virtual void visit (ProxyIndexAccessCmd &)
virtual void visit (ProxyIndexAccessorDef &)
virtual void visit (ProxyIndexCmd &)
virtual void visit (ProxyIndexLoaderDef &)
virtual void visit (ProxyIndexScanDef &)
virtual void visit (ProxyIndexSearchDef &)
virtual void visit (ProxyIndexStreamDef &)
virtual void visit (ProxyIndexWriterDef &)
virtual void visit (ProxyJavaSinkStreamDef &)
virtual void visit (ProxyJavaTransformStreamDef &)
virtual void visit (ProxyKeyAccessorDef &)
virtual void visit (ProxyLbmBitOpStreamDef &)
virtual void visit (ProxyLbmChopperStreamDef &)
virtual void visit (ProxyLbmGeneratorStreamDef &)
virtual void visit (ProxyLbmIntersectStreamDef &)
virtual void visit (ProxyLbmMinusStreamDef &)
virtual void visit (ProxyLbmNormalizerStreamDef &)
virtual void visit (ProxyLbmSearchStreamDef &)
virtual void visit (ProxyLbmSortedAggStreamDef &)
virtual void visit (ProxyLbmSplicerStreamDef &)
virtual void visit (ProxyLbmUnionStreamDef &)
virtual void visit (ProxyLcsClusterAppendStreamDef &)
virtual void visit (ProxyLcsClusterReplaceStreamDef &)
virtual void visit (ProxyLcsClusterScanDef &)
virtual void visit (ProxyLcsRowScanStreamDef &)
virtual void visit (ProxyLhxAggStreamDef &)
virtual void visit (ProxyLhxJoinStreamDef &)
virtual void visit (ProxyMergeStreamDef &)
virtual void visit (ProxyMockTupleStreamDef &)
virtual void visit (ProxyMultiUseBufferingStreamDef &)
virtual void visit (ProxyNestedLoopJoinStreamDef &)
virtual void visit (ProxyReshapeParameter &)
virtual void visit (ProxyReshapeStreamDef &)
virtual void visit (ProxySortedAggStreamDef &)
virtual void visit (ProxySortingStreamDef &)
virtual void visit (ProxySplicerIndexAccessorDef &)
virtual void visit (ProxySplitterStreamDef &)
virtual void visit (ProxyStreamGraphHandle &)
virtual void visit (ProxyStreamHandle &)
virtual void visit (ProxySvptHandle &)
virtual void visit (ProxyTableDeleterDef &)
virtual void visit (ProxyTableInserterDef &)
virtual void visit (ProxyTableUpdaterDef &)
virtual void visit (ProxyTableWriterDef &)
virtual void visit (ProxyTupleAccessor &)
virtual void visit (ProxyTupleAttrAccessor &)
virtual void visit (ProxyTupleAttrDescriptor &)
virtual void visit (ProxyTupleAttrProjection &)
virtual void visit (ProxyTupleDescriptor &)
virtual void visit (ProxyTupleProjection &)
virtual void visit (ProxyTupleStreamDef &)
virtual void visit (ProxyTupleStreamGraphCmd &)
virtual void visit (ProxyTxnCmd &)
virtual void visit (ProxyTxnHandle &)
virtual void visit (ProxyUncollectTupleStreamDef &)
virtual void visit (ProxyValuesStreamDef &)
virtual void visit (ProxyWindowDef &)
virtual void visit (ProxyWindowPartitionDef &)
virtual void visit (ProxyWindowStreamDef &)
virtual void unhandledVisit ()
 Handles case when a visitor attempts to visit a proxy whose type's visit method has not been overridden.

Static Public Member Functions

static StreamGraphHandlegetStreamGraphHandleFromLong (jlong)
static ExecStreamgetExecStreamFromLong (jlong)
static TxnHandlegetTxnHandleFromLong (jlong)
static ExecutionHandlegetExecutionHandleFromLong (jlong)
static jobject getObjectFromLong (jlong jHandle)
static void readTupleDescriptor (TupleDescriptor &tupleDesc, ProxyTupleDescriptor &javaTupleDesc, StoredTypeDescriptorFactory const &typeFactory)
 Reads the Java representation of a TupleDescriptor.
static void readTupleProjection (TupleProjection &tupleProj, SharedProxyTupleProjection pJavaTupleProj)
 Reads the Java representation of a TupleProjection.
static SharedErrorTarget newErrorTarget (jobject fennelJavaErrorTarget)

Public Attributes

ExecutionHandlepExecHandle
 Pointer to the execution handle associated with a command.

Static Public Attributes

static JniProxyVisitTable<
FemVisitor
visitTbl

Protected Member Functions

virtual DbHandlenewDbHandle ()
virtual TxnHandlenewTxnHandle ()
 factory method
void deleteDbHandle (DbHandle *)
 factory method
void setDbHandle (SharedProxyDbHandle, DbHandle *)
void setTxnHandle (SharedProxyTxnHandle, TxnHandle *)
void setStreamGraphHandle (SharedProxyStreamGraphHandle, StreamGraphHandle *)
void setExecStreamHandle (SharedProxyStreamHandle, ExecStream *)
void setSvptHandle (SharedProxySvptHandle, SavepointId)
void setCsnHandle (SharedProxyCsnHandle, TxnId)
void getBTreeForIndexCmd (ProxyIndexCmd &, PageId, BTreeDescriptor &)
void dropOrTruncateIndex (ProxyCmdDropIndex &cmd, bool drop)
virtual JavaTraceTargetnewTraceTarget ()
void beginTxn (ProxyBeginTxnCmd &cmd, bool readOnly, TxnId csn)
 Executes a begin txn command.
virtual void visit (ProxyCmdCreateExecutionStreamGraph &)
virtual void visit (ProxyCmdPrepareExecutionStreamGraph &)
virtual void visit (ProxyCmdCreateStreamHandle &)
virtual void visit (ProxyCmdCreateIndex &)
virtual void visit (ProxyCmdTruncateIndex &)
virtual void visit (ProxyCmdDropIndex &)
virtual void visit (ProxyCmdVerifyIndex &)
virtual void visit (ProxyCmdOpenDatabase &)
virtual void visit (ProxyCmdCloseDatabase &)
virtual void visit (ProxyCmdCheckpoint &)
virtual void visit (ProxyCmdSetParam &)
virtual void visit (ProxyCmdBeginTxn &)
virtual void visit (ProxyCmdBeginTxnWithCsn &)
virtual void visit (ProxyCmdSavepoint &)
virtual void visit (ProxyCmdCommit &)
virtual void visit (ProxyCmdRollback &)
virtual void visit (ProxyCmdGetTxnCsn &)
virtual void visit (ProxyCmdGetLastCommittedTxnId &)
virtual void visit (ProxyCmdAlterSystemDeallocate &)
virtual void visit (ProxyCmdVersionIndexRoot &)
virtual void visit (ProxyCmdInitiateBackup &)
virtual void visit (ProxyCmdCompleteBackup &)
virtual void visit (ProxyCmdAbandonBackup &)
virtual void visit (ProxyCmdRestoreFromBackup &)

Static Protected Member Functions

static DbHandlegetDbHandle (SharedProxyDbHandle)
static TxnHandlegetTxnHandle (SharedProxyTxnHandle)
static StreamGraphHandlegetStreamGraphHandle (SharedProxyStreamGraphHandle)
static SavepointId getSavepointId (SharedProxySvptHandle)
static TxnId getCsn (SharedProxyCsnHandle)

Protected Attributes

int64_t resultHandle
 Handle to be returned by current command, or 0 if none.

Classes

struct  DbHandle
 Handle type for a database. More...
struct  ExecutionHandle
 Handle type for storing execution state information. More...
struct  StreamGraphHandle
struct  TxnHandle
 Handle type which combines a database with a txn. More...

Detailed Description

CmdInterpreter interprets command objects received via JNI from Farrago.

It implements FemVisitor in order to process commands; a visit on a command results in its execution.

Definition at line 47 of file CmdInterpreter.h.


Member Function Documentation

CmdInterpreter::DbHandle * CmdInterpreter::getDbHandle ( SharedProxyDbHandle   )  [static, protected]

Definition at line 67 of file CmdInterpreter.cpp.

Referenced by beginTxn(), and visit().

00069 {
00070     return reinterpret_cast<DbHandle *>(pHandle->getLongHandle());
00071 }

CmdInterpreter::TxnHandle * CmdInterpreter::getTxnHandle ( SharedProxyTxnHandle   )  [static, protected]

Definition at line 73 of file CmdInterpreter.cpp.

Referenced by dropOrTruncateIndex(), getBTreeForIndexCmd(), and visit().

00075 {
00076     return reinterpret_cast<TxnHandle *>(pHandle->getLongHandle());
00077 }

CmdInterpreter::StreamGraphHandle * CmdInterpreter::getStreamGraphHandle ( SharedProxyStreamGraphHandle   )  [static, protected]

Definition at line 79 of file CmdInterpreter.cpp.

Referenced by visit().

00081 {
00082     return reinterpret_cast<StreamGraphHandle *>(pHandle->getLongHandle());
00083 }

SavepointId CmdInterpreter::getSavepointId ( SharedProxySvptHandle   )  [static, protected]

Definition at line 85 of file CmdInterpreter.cpp.

Referenced by visit().

00086 {
00087     return SavepointId(pHandle->getLongHandle());
00088 }

TxnId CmdInterpreter::getCsn ( SharedProxyCsnHandle   )  [static, protected]

Definition at line 90 of file CmdInterpreter.cpp.

Referenced by visit().

00091 {
00092     return TxnId(pHandle->getLongHandle());
00093 }

CmdInterpreter::DbHandle * CmdInterpreter::newDbHandle (  )  [protected, virtual]

Definition at line 131 of file CmdInterpreter.cpp.

Referenced by visit().

00132 {
00133     return new DbHandle();
00134 }

CmdInterpreter::TxnHandle * CmdInterpreter::newTxnHandle (  )  [protected, virtual]

factory method

Definition at line 136 of file CmdInterpreter.cpp.

Referenced by beginTxn().

00137 {
00138     return new TxnHandle();
00139 }

void CmdInterpreter::deleteDbHandle ( DbHandle  )  [protected]

factory method

void CmdInterpreter::setDbHandle ( SharedProxyDbHandle  ,
DbHandle  
) [protected]

Definition at line 95 of file CmdInterpreter.cpp.

References resultHandle.

Referenced by visit().

00097 {
00098     resultHandle = reinterpret_cast<int64_t>(pHandle);
00099 }

void CmdInterpreter::setTxnHandle ( SharedProxyTxnHandle  ,
TxnHandle  
) [protected]

Definition at line 101 of file CmdInterpreter.cpp.

References resultHandle.

Referenced by beginTxn().

00103 {
00104     resultHandle = reinterpret_cast<int64_t>(pHandle);
00105 }

void CmdInterpreter::setStreamGraphHandle ( SharedProxyStreamGraphHandle  ,
StreamGraphHandle  
) [protected]

Definition at line 107 of file CmdInterpreter.cpp.

References resultHandle.

Referenced by visit().

00109 {
00110     resultHandle = reinterpret_cast<int64_t>(pHandle);
00111 }

void CmdInterpreter::setExecStreamHandle ( SharedProxyStreamHandle  ,
ExecStream  
) [protected]

Definition at line 113 of file CmdInterpreter.cpp.

References resultHandle.

Referenced by visit().

00115 {
00116     resultHandle = reinterpret_cast<int64_t>(pStream);
00117 }

void CmdInterpreter::setSvptHandle ( SharedProxySvptHandle  ,
SavepointId   
) [protected]

Definition at line 119 of file CmdInterpreter.cpp.

References opaqueToInt(), and resultHandle.

Referenced by visit().

00121 {
00122     resultHandle = opaqueToInt(svptId);
00123 }

void CmdInterpreter::setCsnHandle ( SharedProxyCsnHandle  ,
TxnId   
) [protected]

Definition at line 125 of file CmdInterpreter.cpp.

References opaqueToInt(), and resultHandle.

Referenced by visit().

00127 {
00128     resultHandle = opaqueToInt(csnId);
00129 }

void CmdInterpreter::getBTreeForIndexCmd ( ProxyIndexCmd ,
PageId  ,
BTreeDescriptor  
) [protected]

Definition at line 366 of file CmdInterpreter.cpp.

References ProxyIndexCmd::getIndexId(), ProxyIndexCmd::getKeyProj(), ProxyIndexCmd::getSegmentId(), ProxyIndexCmd::getTupleDesc(), ProxyTxnCmd::getTxnHandle(), getTxnHandle(), BTreeDescriptor::keyProjection, BTreeDescriptor::pageOwnerId, SegmentAccessor::pCacheAccessor, CmdInterpreter::TxnHandle::pDb, SegmentAccessor::pSegment, CmdInterpreter::TxnHandle::pSnapshotSegment, readTupleDescriptor(), readTupleProjection(), BTreeDescriptor::rootPageId, BTreeDescriptor::segmentAccessor, BTreeDescriptor::segmentId, and BTreeDescriptor::tupleDescriptor.

Referenced by dropOrTruncateIndex(), and visit().

00368 {
00369     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00370 
00371     readTupleDescriptor(
00372         treeDescriptor.tupleDescriptor,
00373         *(cmd.getTupleDesc()),pTxnHandle->pDb->getTypeFactory());
00374 
00375     CmdInterpreter::readTupleProjection(
00376         treeDescriptor.keyProjection,cmd.getKeyProj());
00377 
00378     treeDescriptor.pageOwnerId = PageOwnerId(cmd.getIndexId());
00379     treeDescriptor.segmentId = SegmentId(cmd.getSegmentId());
00380     treeDescriptor.segmentAccessor.pSegment =
00381         pTxnHandle->pDb->getSegmentById(
00382             treeDescriptor.segmentId,
00383             pTxnHandle->pSnapshotSegment);
00384     treeDescriptor.segmentAccessor.pCacheAccessor = pTxnHandle->pDb->getCache();
00385     treeDescriptor.rootPageId = rootPageId;
00386 }

void CmdInterpreter::dropOrTruncateIndex ( ProxyCmdDropIndex cmd,
bool  drop 
) [protected]

Definition at line 446 of file CmdInterpreter.cpp.

References getBTreeForIndexCmd(), getTxnHandle(), CmdInterpreter::TxnHandle::pDb, readTupleProjection(), and BTreeBuilder::truncate().

Referenced by visit().

00448 {
00449     // block checkpoints during this method
00450     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00451     SXMutexSharedGuard actionMutexGuard(
00452         pTxnHandle->pDb->getCheckpointThread()->getActionMutex());
00453 
00454     BTreeDescriptor treeDescriptor;
00455     getBTreeForIndexCmd(cmd,PageId(cmd.getRootPageId()),treeDescriptor);
00456     TupleProjection leafPageIdProj;
00457     if (cmd.getLeafPageIdProj()) {
00458         CmdInterpreter::readTupleProjection(
00459             leafPageIdProj, cmd.getLeafPageIdProj());
00460     }
00461     BTreeBuilder builder(treeDescriptor);
00462     builder.truncate(drop, leafPageIdProj.size() ? &leafPageIdProj : NULL);
00463 }

JavaTraceTarget * CmdInterpreter::newTraceTarget (  )  [protected, virtual]

Definition at line 168 of file CmdInterpreter.cpp.

Referenced by visit().

00169 {
00170     return new JavaTraceTarget();
00171 }

void CmdInterpreter::beginTxn ( ProxyBeginTxnCmd cmd,
bool  readOnly,
TxnId  csn 
) [protected]

Executes a begin txn command.

Parameters:
cmd the command
readOnly true if the txn is read-only
csn if non-null and snapshots are enabled, the commit sequence number for reads

Definition at line 470 of file CmdInterpreter.cpp.

References ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyBeginTxnCmd::getResultHandle(), JniUtil::incrementHandleCount(), newTxnHandle(), NULL_TXN_ID, CmdInterpreter::DbHandle::pDb, CmdInterpreter::DbHandle::pResourceGovernor, and setTxnHandle().

Referenced by visit().

00471 {
00472     assert(readOnly || csn == NULL_TXN_ID);
00473 
00474     // block checkpoints during this method
00475     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00476     SharedDatabase pDb = pDbHandle->pDb;
00477 
00478     SXMutexSharedGuard actionMutexGuard(
00479         pDb->getCheckpointThread()->getActionMutex());
00480 
00481     std::auto_ptr<TxnHandle> pTxnHandle(newTxnHandle());
00482     JniUtil::incrementHandleCount(TXNHANDLE_TRACE_TYPE_STR, pTxnHandle.get());
00483     pTxnHandle->pDb = pDb;
00484     pTxnHandle->readOnly = readOnly;
00485     // TODO:  CacheAccessor factory
00486     pTxnHandle->pTxn = pDb->getTxnLog()->newLogicalTxn(pDb->getCache());
00487     pTxnHandle->pResourceGovernor = pDbHandle->pResourceGovernor;
00488 
00489     // NOTE:  use a null scratchAccessor; individual ExecStreamGraphs
00490     // will have their own
00491     SegmentAccessor scratchAccessor;
00492 
00493     pTxnHandle->pFtrsTableWriterFactory = SharedFtrsTableWriterFactory(
00494         new FtrsTableWriterFactory(
00495             pDb,
00496             pDb->getCache(),
00497             pDb->getTypeFactory(),
00498             scratchAccessor));
00499 
00500     // If snapshots are enabled, set up 2 snapshot segments -- one of which
00501     // only reads committed data.  This will be used for streams that need to
00502     // read a snapshot of the data before other portions of the stream graph
00503     // have modified the segment.
00504     if (pDb->areSnapshotsEnabled()) {
00505         if (csn == NULL_TXN_ID) {
00506             csn = pTxnHandle->pTxn->getTxnId();
00507         }
00508         pTxnHandle->pSnapshotSegment =
00509             pDb->getSegmentFactory()->newSnapshotRandomAllocationSegment(
00510                 pDb->getDataSegment(),
00511                 pDb->getDataSegment(),
00512                 csn,
00513                 false);
00514         pTxnHandle->pReadCommittedSnapshotSegment =
00515             pDb->getSegmentFactory()->newSnapshotRandomAllocationSegment(
00516                 pDb->getDataSegment(),
00517                 pDb->getDataSegment(),
00518                 csn,
00519                 true);
00520     } else {
00521         assert(csn == NULL_TXN_ID);
00522     }
00523 
00524     setTxnHandle(cmd.getResultHandle(),pTxnHandle.release());
00525 }

void CmdInterpreter::visit ( ProxyCmdCreateExecutionStreamGraph  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 648 of file CmdInterpreter.cpp.

References ProxyCmdCreateExecutionStreamGraph::getResultHandle(), ProxyTxnCmd::getTxnHandle(), getTxnHandle(), JniUtil::incrementHandleCount(), ExecStreamGraph::newExecStreamGraph(), CmdInterpreter::TxnHandle::pDb, CmdInterpreter::TxnHandle::pFtrsTableWriterFactory, CmdInterpreter::TxnHandle::pReadCommittedSnapshotSegment, CmdInterpreter::TxnHandle::pResourceGovernor, CmdInterpreter::TxnHandle::pSnapshotSegment, CmdInterpreter::TxnHandle::pTxn, and setStreamGraphHandle().

00649 {
00650 #if 0
00651     struct mallinfo minfo = mallinfo();
00652     std::cout << "Number of allocated bytes before stream graph construction = "
00653         << minfo.uordblks << " bytes" << std::endl;
00654 #endif
00655     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00656     SharedDatabase pDb = pTxnHandle->pDb;
00657     SharedExecStreamGraph pGraph =
00658         ExecStreamGraph::newExecStreamGraph();
00659     pGraph->setTxn(pTxnHandle->pTxn);
00660     pGraph->setResourceGovernor(pTxnHandle->pResourceGovernor);
00661     std::auto_ptr<StreamGraphHandle> pStreamGraphHandle(
00662         new StreamGraphHandle());
00663     JniUtil::incrementHandleCount(
00664         STREAMGRAPHHANDLE_TRACE_TYPE_STR, pStreamGraphHandle.get());
00665     pStreamGraphHandle->javaRuntimeContext = NULL;
00666     pStreamGraphHandle->pTxnHandle = pTxnHandle;
00667     pStreamGraphHandle->pExecStreamGraph = pGraph;
00668     pStreamGraphHandle->pExecStreamFactory.reset(
00669         new ExecStreamFactory(
00670             pDb,
00671             pTxnHandle->pFtrsTableWriterFactory,
00672             pStreamGraphHandle.get()));
00673     // When snapshots are enabled, allocate DynamicDelegatingSegments for the
00674     // stream graph so if the stream graph is executed in different txns,
00675     // we can reset the delegate to whatever is the snapshot segment associated
00676     // with the current txn.
00677     if (pDb->areSnapshotsEnabled()) {
00678         pStreamGraphHandle->pSegment =
00679             pDb->getSegmentFactory()->newDynamicDelegatingSegment(
00680                 pTxnHandle->pSnapshotSegment);
00681         pStreamGraphHandle->pReadCommittedSegment =
00682             pDb->getSegmentFactory()->newDynamicDelegatingSegment(
00683                 pTxnHandle->pReadCommittedSnapshotSegment);
00684     }
00685     setStreamGraphHandle(
00686         cmd.getResultHandle(),
00687         pStreamGraphHandle.release());
00688 }

void CmdInterpreter::visit ( ProxyCmdPrepareExecutionStreamGraph  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 690 of file CmdInterpreter.cpp.

References ExecStreamBuilder::buildStreamGraph(), ProxyCmdPrepareExecutionStreamGraph::getDegreeOfParallelism(), ProxyTupleStreamGraphCmd::getStreamGraphHandle(), getStreamGraphHandle(), JniUtil::getThreadTracker(), CmdInterpreter::StreamGraphHandle::pExecStreamFactory, CmdInterpreter::StreamGraphHandle::pExecStreamGraph, CmdInterpreter::StreamGraphHandle::pScheduler, and CmdInterpreter::StreamGraphHandle::pTxnHandle.

00691 {
00692     StreamGraphHandle *pStreamGraphHandle = getStreamGraphHandle(
00693         cmd.getStreamGraphHandle());
00694     TxnHandle *pTxnHandle = pStreamGraphHandle->pTxnHandle;
00695     // NOTE:  sequence is important here
00696     SharedExecStreamScheduler pScheduler;
00697     std::string schedulerName = "xo.scheduler";
00698     if (cmd.getDegreeOfParallelism() == 1) {
00699         pScheduler.reset(
00700             new DfsTreeExecStreamScheduler(
00701                 pTxnHandle->pDb->getSharedTraceTarget(),
00702                 schedulerName));
00703     } else {
00704         pScheduler.reset(
00705             new ParallelExecStreamScheduler(
00706                 pTxnHandle->pDb->getSharedTraceTarget(),
00707                 schedulerName,
00708                 JniUtil::getThreadTracker(),
00709                 cmd.getDegreeOfParallelism()));
00710     }
00711     ExecStreamGraphEmbryo graphEmbryo(
00712         pStreamGraphHandle->pExecStreamGraph,
00713         pScheduler,
00714         pTxnHandle->pDb->getCache(),
00715         pTxnHandle->pDb->getSegmentFactory());
00716     pStreamGraphHandle->pExecStreamFactory->setGraphEmbryo(graphEmbryo);
00717     ExecStreamBuilder streamBuilder(
00718         graphEmbryo,
00719         *(pStreamGraphHandle->pExecStreamFactory));
00720     streamBuilder.buildStreamGraph(cmd, true);
00721     pStreamGraphHandle->pExecStreamFactory.reset();
00722     pStreamGraphHandle->pScheduler = pScheduler;
00723 #if 0
00724     struct mallinfo minfo = mallinfo();
00725     std::cout << "Number of allocated bytes after stream graph construction = "
00726         << minfo.uordblks << " bytes" << std::endl;
00727 #endif
00728 }

void CmdInterpreter::visit ( ProxyCmdCreateStreamHandle  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 730 of file CmdInterpreter.cpp.

References ProxyCmdCreateStreamHandle::getResultHandle(), ProxyTupleStreamGraphCmd::getStreamGraphHandle(), getStreamGraphHandle(), ProxyCmdCreateStreamHandle::getStreamName(), ProxyCmdCreateStreamHandle::isInput(), CmdInterpreter::StreamGraphHandle::pExecStreamGraph, and setExecStreamHandle().

00731 {
00732     StreamGraphHandle *pStreamGraphHandle = getStreamGraphHandle(
00733         cmd.getStreamGraphHandle());
00734     SharedExecStream pStream;
00735     if (cmd.isInput()) {
00736         pStream =
00737             pStreamGraphHandle->pExecStreamGraph->findLastStream(
00738             cmd.getStreamName(), 0);
00739     } else {
00740         pStream =
00741             pStreamGraphHandle->pExecStreamGraph->findStream(
00742             cmd.getStreamName());
00743     }
00744 
00745     setExecStreamHandle(
00746         cmd.getResultHandle(),
00747         pStream.get());
00748 }

void CmdInterpreter::visit ( ProxyCmdCreateIndex  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 388 of file CmdInterpreter.cpp.

References BTreeBuilder::createEmptyRoot(), getBTreeForIndexCmd(), BTreeAccessBase::getRootPageId(), getTxnHandle(), NULL_PAGE_ID, opaqueToInt(), CmdInterpreter::TxnHandle::pDb, and resultHandle.

00389 {
00390     // block checkpoints during this method
00391     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00392     SXMutexSharedGuard actionMutexGuard(
00393         pTxnHandle->pDb->getCheckpointThread()->getActionMutex());
00394 
00395     BTreeDescriptor treeDescriptor;
00396     getBTreeForIndexCmd(cmd,NULL_PAGE_ID,treeDescriptor);
00397     BTreeBuilder builder(treeDescriptor);
00398     builder.createEmptyRoot();
00399     resultHandle = opaqueToInt(builder.getRootPageId());
00400 }

void CmdInterpreter::visit ( ProxyCmdTruncateIndex  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 402 of file CmdInterpreter.cpp.

References dropOrTruncateIndex().

00403 {
00404     dropOrTruncateIndex(cmd, false);
00405 }

void CmdInterpreter::visit ( ProxyCmdDropIndex  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 407 of file CmdInterpreter.cpp.

References dropOrTruncateIndex().

00408 {
00409     dropOrTruncateIndex(cmd, true);
00410 }

void CmdInterpreter::visit ( ProxyCmdVerifyIndex  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 412 of file CmdInterpreter.cpp.

References ProxyCmdVerifyIndex::clearResultUniqueKeyCount(), getBTreeForIndexCmd(), ProxyIndexCmd::getLeafPageIdProj(), ProxyIndexAccessCmd::getRootPageId(), BTreeVerifier::getStatistics(), ProxyTxnCmd::getTxnHandle(), getTxnHandle(), ProxyCmdVerifyIndex::isEstimate(), ProxyCmdVerifyIndex::isIncludeTuples(), BTreeStatistics::nLeafNodes, BTreeStatistics::nNonLeafNodes, BTreeStatistics::nTuples, BTreeStatistics::nUniqueKeys, CmdInterpreter::TxnHandle::pDb, readTupleProjection(), ProxyCmdVerifyIndex::setResultPageCount(), ProxyCmdVerifyIndex::setResultUniqueKeyCount(), and BTreeVerifier::verify().

00413 {
00414     // block checkpoints during this method
00415     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00416     SXMutexSharedGuard actionMutexGuard(
00417         pTxnHandle->pDb->getCheckpointThread()->getActionMutex());
00418 
00419     BTreeDescriptor treeDescriptor;
00420     getBTreeForIndexCmd(cmd,PageId(cmd.getRootPageId()),treeDescriptor);
00421     TupleProjection leafPageIdProj;
00422     if (cmd.getLeafPageIdProj()) {
00423         CmdInterpreter::readTupleProjection(
00424             leafPageIdProj, cmd.getLeafPageIdProj());
00425     }
00426     bool estimate = cmd.isEstimate();
00427     bool includeTuples = cmd.isIncludeTuples();
00428     bool keys = (!estimate);
00429     bool leaf = ((!estimate) || includeTuples);
00430     BTreeVerifier verifier(treeDescriptor);
00431     verifier.verify(true, keys, leaf);
00432     BTreeStatistics statistics = verifier.getStatistics();
00433     long pageCount = statistics.nNonLeafNodes + statistics.nLeafNodes;
00434     if (includeTuples) {
00435         pageCount += statistics.nTuples;
00436     }
00437     cmd.setResultPageCount(pageCount);
00438 
00439     if (keys) {
00440         cmd.setResultUniqueKeyCount(statistics.nUniqueKeys);
00441     } else {
00442         cmd.clearResultUniqueKeyCount();
00443     }
00444 }

void CmdInterpreter::visit ( ProxyCmdOpenDatabase  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 181 of file CmdInterpreter.cpp.

References ExecStreamResourceKnobs::cacheReservePercentage, JniUtil::configure(), DeviceMode::createNew, ExecStreamResourceKnobs::expectedConcurrentStatements, ConfigMap::getIntParam(), ProxyCmdOpenDatabase::getParams(), ProxyCmdOpenDatabase::getResultHandle(), JniUtil::incrementHandleCount(), ProxyCmdOpenDatabase::isCreateDatabase(), DeviceMode::load, ExecStreamResourceQuantity::nCachePages, Cache::newCache(), Database::newDatabase(), newDbHandle(), newTraceTarget(), CacheParams::nMemPagesInit, CacheParams::nMemPagesMax, JniUtilParams::readConfig(), CacheParams::readConfig(), setDbHandle(), ProxyCmdOpenDatabase::setResultRecoveryRequired(), ConfigMap::setStringParam(), AutoBacktrace::setTraceTarget(), and TRACE_WARNING.

00182 {
00183     ConfigMap configMap;
00184 
00185     SharedProxyDatabaseParam pParam = cmd.getParams();
00186     for (; pParam; ++pParam) {
00187         configMap.setStringParam(pParam->getName(),pParam->getValue());
00188     }
00189 
00190     CacheParams cacheParams;
00191     cacheParams.readConfig(configMap);
00192     SharedCache pCache = Cache::newCache(cacheParams);
00193 
00194     JniUtilParams jniUtilParams;
00195     jniUtilParams.readConfig(configMap);
00196     JniUtil::configure(jniUtilParams);
00197 
00198     DeviceMode openMode = cmd.isCreateDatabase()
00199         ? DeviceMode::createNew
00200         : DeviceMode::load;
00201 
00202     std::auto_ptr<DbHandle> pDbHandle(newDbHandle());
00203     JniUtil::incrementHandleCount(DBHANDLE_TRACE_TYPE_STR, pDbHandle.get());
00204 
00205     JavaTraceTarget *pJavaTraceTarget = newTraceTarget();
00206     pDbHandle->pTraceTarget.reset(pJavaTraceTarget);
00207     // on a fatal error, echo the backtrace to the log file:
00208     AutoBacktrace::setTraceTarget(pDbHandle->pTraceTarget);
00209 
00210     SharedDatabase pDb;
00211     try {
00212         pDb = Database::newDatabase(
00213             pCache,
00214             configMap,
00215             openMode,
00216             pDbHandle->pTraceTarget,
00217             SharedPseudoUuidGenerator(new JniPseudoUuidGenerator()));
00218     } catch (...) {
00219         AutoBacktrace::setTraceTarget();
00220         throw;
00221     }
00222 
00223     pDbHandle->pDb = pDb;
00224 
00225     ExecStreamResourceKnobs knobSettings;
00226     knobSettings.cacheReservePercentage =
00227         configMap.getIntParam("cacheReservePercentage");
00228     knobSettings.expectedConcurrentStatements =
00229         configMap.getIntParam("expectedConcurrentStatements");
00230 
00231     ExecStreamResourceQuantity resourcesAvailable;
00232     resourcesAvailable.nCachePages = pCache->getMaxLockedPages();
00233 
00234     pDbHandle->pResourceGovernor =
00235         SharedExecStreamGovernor(
00236             new SimpleExecStreamGovernor(
00237                 knobSettings, resourcesAvailable,
00238                 pDbHandle->pTraceTarget,
00239                 "xo.resourceGovernor"));
00240 
00241     if (pDb->isRecoveryRequired()) {
00242         SegmentAccessor scratchAccessor =
00243             pDb->getSegmentFactory()->newScratchSegment(pDb->getCache());
00244         FtrsTableWriterFactory recoveryFactory(
00245             pDb,
00246             pDb->getCache(),
00247             pDb->getTypeFactory(),
00248             scratchAccessor);
00249         pDb->recover(recoveryFactory);
00250         cmd.setResultRecoveryRequired(true);
00251     } else {
00252         cmd.setResultRecoveryRequired(false);
00253     }
00254     pDbHandle->statsTimer.setTarget(*pJavaTraceTarget);
00255     pDbHandle->statsTimer.addSource(pDb);
00256     pDbHandle->statsTimer.addSource(pDbHandle->pResourceGovernor);
00257     pDbHandle->statsTimer.start();
00258 
00259     // Cache initialization may have been unable to allocate the requested
00260     // number of pages -- check for this case and report it in the log.
00261     if (pCache->getMaxAllocatedPageCount() != cacheParams.nMemPagesMax ||
00262         pCache->getAllocatedPageCount() != cacheParams.nMemPagesInit)
00263     {
00264         FENNEL_DELEGATE_TRACE(
00265             TRACE_WARNING,
00266             pDb,
00267             "Unable to allocate "
00268             << cacheParams.nMemPagesInit
00269             << " (of "
00270             << cacheParams.nMemPagesMax
00271             << " max) cache pages; allocated "
00272             << pCache->getAllocatedPageCount()
00273             << " cache pages.");
00274     }
00275 
00276     setDbHandle(cmd.getResultHandle(),pDbHandle.release());
00277 }

void CmdInterpreter::visit ( ProxyCmdCloseDatabase  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 279 of file CmdInterpreter.cpp.

References deleteAndNullify(), getDbHandle(), CmdInterpreter::DbHandle::pResourceGovernor, and AutoBacktrace::setTraceTarget().

00280 {
00281     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00282     pDbHandle->pResourceGovernor.reset();
00283     AutoBacktrace::setTraceTarget();
00284     deleteAndNullify(pDbHandle);
00285 }

void CmdInterpreter::visit ( ProxyCmdCheckpoint  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 287 of file CmdInterpreter.cpp.

References CHECKPOINT_FLUSH_ALL, CHECKPOINT_FLUSH_FUZZY, ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdCheckpoint::isAsync(), ProxyCmdCheckpoint::isFuzzy(), and CmdInterpreter::DbHandle::pDb.

00288 {
00289     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00290 
00291     pDbHandle->pDb->requestCheckpoint(
00292         cmd.isFuzzy() ? CHECKPOINT_FLUSH_FUZZY : CHECKPOINT_FLUSH_ALL,
00293         cmd.isAsync());
00294 }

void CmdInterpreter::visit ( ProxyCmdSetParam  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 296 of file CmdInterpreter.cpp.

References ExecStreamResourceKnobs::cacheReservePercentage, EXEC_KNOB_CACHE_RESERVE_PERCENTAGE, EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS, EXEC_RESOURCE_CACHE_PAGES, ExecStreamResourceKnobs::expectedConcurrentStatements, ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdSetParam::getParam(), ExecStreamResourceQuantity::nCachePages, CmdInterpreter::DbHandle::pDb, and CmdInterpreter::DbHandle::pResourceGovernor.

00297 {
00298     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00299     SharedProxyDatabaseParam pParam = cmd.getParam();
00300 
00301     std::string paramName = pParam->getName();
00302 
00303     if (paramName.compare("cachePagesInit") == 0) {
00304         int pageCount = boost::lexical_cast<int>(pParam->getValue());
00305         SharedCache pCache = pDbHandle->pDb->getCache();
00306         if (pageCount <= 0 || pageCount > pCache->getMaxAllocatedPageCount()) {
00307             throw InvalidParamExcn("1", "'cachePagesMax'");
00308         }
00309 
00310         bool decreasingPageCount = pageCount < pCache->getAllocatedPageCount();
00311         if (decreasingPageCount) {
00312             // Let governor veto a page count decrease
00313             ExecStreamResourceQuantity available;
00314             available.nCachePages = pageCount;
00315             if (!pDbHandle->pResourceGovernor->setResourceAvailability(
00316                     available, EXEC_RESOURCE_CACHE_PAGES))
00317             {
00318                 throw InvalidParamExcn(
00319                     "the number of pages currently assigned (plus reserve)",
00320                     "'cachePagesMax'");
00321             }
00322         }
00323 
00324         pCache->setAllocatedPageCount(pageCount);
00325 
00326         if (!decreasingPageCount) {
00327             // Notify governor of increased page count
00328             ExecStreamResourceQuantity available;
00329             available.nCachePages = pageCount;
00330             bool result =
00331                 pDbHandle->pResourceGovernor->setResourceAvailability(
00332                     available, EXEC_RESOURCE_CACHE_PAGES);
00333             assert(result);
00334         }
00335     } else if (paramName.compare("expectedConcurrentStatements") == 0) {
00336         int nStatements = boost::lexical_cast<int>(pParam->getValue());
00337         SharedCache pCache = pDbHandle->pDb->getCache();
00338         // need to set aside at least 5 pages per statement
00339         if (nStatements <= 0 ||
00340             nStatements > pCache->getMaxLockedPages() / 5)
00341         {
00342             throw InvalidParamExcn("1", "'cachePagesInit/5'");
00343         }
00344         ExecStreamResourceKnobs knob;
00345         knob.expectedConcurrentStatements = nStatements;
00346         pDbHandle->pResourceGovernor->setResourceKnob(
00347             knob, EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS);
00348 
00349     } else if (paramName.compare("cacheReservePercentage") == 0) {
00350         int percent = boost::lexical_cast<int>(pParam->getValue());
00351         if (percent <= 0 || percent > 99) {
00352             throw InvalidParamExcn("1", "99");
00353         }
00354         ExecStreamResourceKnobs knob;
00355         knob.cacheReservePercentage = percent;
00356         if (!pDbHandle->pResourceGovernor->setResourceKnob(
00357             knob, EXEC_KNOB_CACHE_RESERVE_PERCENTAGE))
00358         {
00359             throw InvalidParamExcn(
00360                 "1",
00361                 "a percentage that sets aside fewer pages, to allow for pages already assigned");
00362         }
00363     }
00364 }

void CmdInterpreter::visit ( ProxyCmdBeginTxn  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 465 of file CmdInterpreter.cpp.

References beginTxn(), ProxyCmdBeginTxn::isReadOnly(), and NULL_TXN_ID.

00466 {
00467     beginTxn(cmd, cmd.isReadOnly(), NULL_TXN_ID);
00468 }

void CmdInterpreter::visit ( ProxyCmdBeginTxnWithCsn  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 527 of file CmdInterpreter.cpp.

References beginTxn(), getCsn(), and ProxyCmdBeginTxnWithCsn::getCsnHandle().

00528 {
00529     beginTxn(cmd, true, getCsn(cmd.getCsnHandle()));
00530 }

void CmdInterpreter::visit ( ProxyCmdSavepoint  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 532 of file CmdInterpreter.cpp.

References ProxyCmdSavepoint::getResultHandle(), ProxyTxnCmd::getTxnHandle(), getTxnHandle(), CmdInterpreter::TxnHandle::pDb, CmdInterpreter::TxnHandle::pTxn, and setSvptHandle().

00533 {
00534     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00535 
00536     // block checkpoints during this method
00537     SXMutexSharedGuard actionMutexGuard(
00538         pTxnHandle->pDb->getCheckpointThread()->getActionMutex());
00539 
00540     setSvptHandle(
00541         cmd.getResultHandle(),
00542         pTxnHandle->pTxn->createSavepoint());
00543 }

void CmdInterpreter::visit ( ProxyCmdCommit  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 545 of file CmdInterpreter.cpp.

References CHECKPOINT_FLUSH_ALL, SnapshotRandomAllocationSegment::commitChanges(), deleteAndNullify(), getSavepointId(), getTxnHandle(), CmdInterpreter::TxnHandle::pDb, CmdInterpreter::TxnHandle::pSnapshotSegment, CmdInterpreter::TxnHandle::pTxn, and CmdInterpreter::TxnHandle::readOnly.

00546 {
00547     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00548     SharedDatabase pDb = pTxnHandle->pDb;
00549 
00550     // block checkpoints during this method
00551     bool txnBlocksCheckpoint = !pTxnHandle->readOnly && pDb->shouldForceTxns();
00552     SXMutexSharedGuard actionMutexGuard(
00553         pDb->getCheckpointThread()->getActionMutex());
00554 
00555     if (pDb->areSnapshotsEnabled()) {
00556         // Commit the current txn, and start a new one so the versioned
00557         // pages that we're now going to commit will be marked with a txnId
00558         // corresponding to the time of the commit.  At present, those pages
00559         // are marked with a txnId corresponding to the start of the txn.
00560         pTxnHandle->pTxn->commit();
00561         pTxnHandle->pTxn = pDb->getTxnLog()->newLogicalTxn(pDb->getCache());
00562         SnapshotRandomAllocationSegment *pSnapshotSegment =
00563             SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
00564                 pTxnHandle->pSnapshotSegment);
00565         TxnId commitTxnId = pTxnHandle->pTxn->getTxnId();
00566         pSnapshotSegment->commitChanges(commitTxnId);
00567 
00568         // Flush pages associated with the snapshot segment.  Note that we
00569         // don't need to flush the underlying versioned segment first since
00570         // the snapshot pages are all new and therefore, are never logged.
00571         // Pages in the underlying versioned segment will be flushed in the
00572         // requestCheckpoint call further below.  Also note that the
00573         // checkpoint is not initiated through the dynamically cast segment
00574         // to ensure that the command is traced if tracing is turned on.
00575         if (txnBlocksCheckpoint) {
00576             pTxnHandle->pSnapshotSegment->checkpoint(CHECKPOINT_FLUSH_ALL);
00577         }
00578     }
00579 
00580     if (cmd.getSvptHandle()) {
00581         SavepointId svptId = getSavepointId(cmd.getSvptHandle());
00582         pTxnHandle->pTxn->commitSavepoint(svptId);
00583     } else {
00584         pTxnHandle->pTxn->commit();
00585         deleteAndNullify(pTxnHandle);
00586         if (txnBlocksCheckpoint) {
00587             // release the checkpoint lock acquired above
00588             actionMutexGuard.unlock();
00589             // force a checkpoint now to flush all data modified by transaction
00590             // to disk; wait for it to complete before reporting the
00591             // transaction as committed
00592             pDb->requestCheckpoint(CHECKPOINT_FLUSH_ALL, false);
00593         }
00594     }
00595 }

void CmdInterpreter::visit ( ProxyCmdRollback  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 597 of file CmdInterpreter.cpp.

References deleteAndNullify(), getSavepointId(), getTxnHandle(), CmdInterpreter::TxnHandle::pDb, CmdInterpreter::TxnHandle::pSnapshotSegment, CmdInterpreter::TxnHandle::pTxn, and CmdInterpreter::TxnHandle::readOnly.

00598 {
00599     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00600     SharedDatabase pDb = pTxnHandle->pDb;
00601 
00602     // block checkpoints during this method
00603     bool txnBlocksCheckpoint = !pTxnHandle->readOnly && pDb->shouldForceTxns();
00604     SXMutexSharedGuard actionMutexGuard(
00605         pDb->getCheckpointThread()->getActionMutex());
00606 
00607     if (pDb->areSnapshotsEnabled()) {
00608         SnapshotRandomAllocationSegment *pSegment =
00609             SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
00610                 pTxnHandle->pSnapshotSegment);
00611         pSegment->rollbackChanges();
00612     }
00613 
00614     if (cmd.getSvptHandle()) {
00615         SavepointId svptId = getSavepointId(cmd.getSvptHandle());
00616         pTxnHandle->pTxn->rollback(&svptId);
00617     } else {
00618         pTxnHandle->pTxn->rollback();
00619         deleteAndNullify(pTxnHandle);
00620         if (txnBlocksCheckpoint && !pDb->areSnapshotsEnabled()) {
00621             // Implement rollback by simulating crash recovery,
00622             // reverting all pages modified by transaction.  No need
00623             // to do this when snapshots are in use because no permanent
00624             // pages were modified.
00625             pDb->recoverOnline();
00626         }
00627     }
00628 }

void CmdInterpreter::visit ( ProxyCmdGetTxnCsn  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 630 of file CmdInterpreter.cpp.

References getTxnHandle(), CmdInterpreter::TxnHandle::pDb, CmdInterpreter::TxnHandle::pSnapshotSegment, and setCsnHandle().

00631 {
00632     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00633     SharedDatabase pDb = pTxnHandle->pDb;
00634     assert(pDb->areSnapshotsEnabled());
00635     SnapshotRandomAllocationSegment *pSegment =
00636         SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
00637             pTxnHandle->pSnapshotSegment);
00638     setCsnHandle(cmd.getResultHandle(), pSegment->getSnapshotCsn());
00639 }

void CmdInterpreter::visit ( ProxyCmdGetLastCommittedTxnId  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 641 of file CmdInterpreter.cpp.

References getDbHandle(), CmdInterpreter::DbHandle::pDb, and setCsnHandle().

00642 {
00643     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00644     SharedDatabase pDb = pDbHandle->pDb;
00645     setCsnHandle(cmd.getResultHandle(), pDb->getLastCommittedTxnId());
00646 }

void CmdInterpreter::visit ( ProxyCmdAlterSystemDeallocate  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 786 of file CmdInterpreter.cpp.

References ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdAlterSystemDeallocate::getOldestLabelCsn(), isMAXU(), NULL_TXN_ID, and CmdInterpreter::DbHandle::pDb.

00787 {
00788     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00789     SharedDatabase pDb = pDbHandle->pDb;
00790     if (!pDb->areSnapshotsEnabled()) {
00791         // Nothing to do if snapshots aren't enabled
00792         return;
00793     } else {
00794         uint64_t paramVal = cmd.getOldestLabelCsn();
00795         TxnId labelCsn = isMAXU(paramVal) ? NULL_TXN_ID : TxnId(paramVal);
00796         pDb->deallocateOldPages(labelCsn);
00797     }
00798 }

void CmdInterpreter::visit ( ProxyCmdVersionIndexRoot  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 800 of file CmdInterpreter.cpp.

References ProxyCmdVersionIndexRoot::getNewRootPageId(), ProxyCmdVersionIndexRoot::getOldRootPageId(), ProxyTxnCmd::getTxnHandle(), getTxnHandle(), CmdInterpreter::TxnHandle::pDb, and CmdInterpreter::TxnHandle::pSnapshotSegment.

00801 {
00802     TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
00803     SharedDatabase pDb = pTxnHandle->pDb;
00804     assert(pDb->areSnapshotsEnabled());
00805 
00806     SnapshotRandomAllocationSegment *pSnapshotSegment =
00807         SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
00808             pTxnHandle->pSnapshotSegment);
00809     pSnapshotSegment->versionPage(
00810         PageId(cmd.getOldRootPageId()),
00811         PageId(cmd.getNewRootPageId()));
00812 }

void CmdInterpreter::visit ( ProxyCmdInitiateBackup  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 814 of file CmdInterpreter.cpp.

References ProxyCmdInitiateBackup::getBackupPathname(), ProxyCmdInitiateBackup::getCompressionProgram(), ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdInitiateBackup::getLowerBoundCsn(), ProxyCsnHandleReturningCmd::getResultHandle(), ProxyCmdInitiateBackup::getSpacePadding(), ProxyCmdInitiateBackup::isCheckSpaceRequirements(), isMAXU(), NULL_TXN_ID, CmdInterpreter::DbHandle::pDb, pExecHandle, setCsnHandle(), and ProxyCmdInitiateBackup::setResultDataDeviceSize().

00815 {
00816     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00817     SharedDatabase pDb = pDbHandle->pDb;
00818     uint64_t paramVal = cmd.getLowerBoundCsn();
00819     TxnId lowerBoundCsn = isMAXU(paramVal) ? NULL_TXN_ID : TxnId(paramVal);
00820     FileSize dataDeviceSize;
00821 
00822     volatile bool abortFlag = false;
00823     TxnId csn =
00824         pDb->initiateBackup(
00825             cmd.getBackupPathname(),
00826             cmd.isCheckSpaceRequirements(),
00827             FileSize(cmd.getSpacePadding()),
00828             lowerBoundCsn,
00829             cmd.getCompressionProgram(),
00830             dataDeviceSize,
00831             (pExecHandle == NULL) ? abortFlag : pExecHandle->aborted);
00832     cmd.setResultDataDeviceSize(dataDeviceSize);
00833     setCsnHandle(cmd.getResultHandle(), csn);
00834 }

void CmdInterpreter::visit ( ProxyCmdCompleteBackup  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 836 of file CmdInterpreter.cpp.

References CmdInterpreter::ExecutionHandle::aborted, ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdCompleteBackup::getLowerBoundCsn(), ProxyCmdCompleteBackup::getUpperBoundCsn(), isMAXU(), NULL_TXN_ID, CmdInterpreter::DbHandle::pDb, and pExecHandle.

00837 {
00838     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00839     SharedDatabase pDb = pDbHandle->pDb;
00840     uint64_t paramVal = cmd.getLowerBoundCsn();
00841     TxnId lowerBoundCsn = isMAXU(paramVal) ? NULL_TXN_ID : TxnId(paramVal);
00842     volatile bool abortFlag = false;
00843     pDb->completeBackup(
00844         lowerBoundCsn,
00845         TxnId(cmd.getUpperBoundCsn()),
00846         (pExecHandle == NULL) ? abortFlag : pExecHandle->aborted);
00847 }

void CmdInterpreter::visit ( ProxyCmdAbandonBackup  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 849 of file CmdInterpreter.cpp.

References getDbHandle(), and CmdInterpreter::DbHandle::pDb.

00850 {
00851     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00852     SharedDatabase pDb = pDbHandle->pDb;
00853     pDb->abortBackup();
00854 }

void CmdInterpreter::visit ( ProxyCmdRestoreFromBackup  )  [protected, virtual]

Reimplemented from FemVisitor.

Definition at line 856 of file CmdInterpreter.cpp.

References CmdInterpreter::ExecutionHandle::aborted, ProxyCmdRestoreFromBackup::getBackupPathname(), ProxyCmdRestoreFromBackup::getCompressionProgram(), ProxyDatabaseCmd::getDbHandle(), getDbHandle(), ProxyCmdRestoreFromBackup::getFileSize(), ProxyCmdRestoreFromBackup::getLowerBoundCsn(), ProxyCmdRestoreFromBackup::getUpperBoundCsn(), isMAXU(), NULL_TXN_ID, CmdInterpreter::DbHandle::pDb, and pExecHandle.

00857 {
00858     DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
00859     SharedDatabase pDb = pDbHandle->pDb;
00860     uint64_t paramVal = cmd.getLowerBoundCsn();
00861     TxnId lowerBoundCsn = isMAXU(paramVal) ? NULL_TXN_ID : TxnId(paramVal);
00862     volatile bool abortFlag = false;
00863     pDb->restoreFromBackup(
00864         cmd.getBackupPathname(),
00865         cmd.getFileSize(),
00866         cmd.getCompressionProgram(),
00867         lowerBoundCsn,
00868         TxnId(cmd.getUpperBoundCsn()),
00869         (pExecHandle == NULL) ? abortFlag : pExecHandle->aborted);
00870 }

int64_t CmdInterpreter::executeCommand ( ProxyCmd cmd  )  [virtual]

Interprets the given command object.

Parameters:
cmd the ProxyCmd to be executed
Returns:
result handle if any

Definition at line 58 of file CmdInterpreter.cpp.

References resultHandle, and FemVisitor::visitTbl.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_executeJavaCmd().

00060 {
00061     resultHandle = 0;
00062     // dispatch based on polymorphic command type
00063     FemVisitor::visitTbl.accept(*this,cmd);
00064     return resultHandle;
00065 }

CmdInterpreter::StreamGraphHandle & CmdInterpreter::getStreamGraphHandleFromLong ( jlong   )  [inline, static]

Definition at line 269 of file CmdInterpreter.h.

Referenced by Java_com_lucidera_farrago_fennel_LucidEraJni_registerStreamFactory(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphClose(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphGetInputStreams(), and Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphOpen().

00270 {
00271     return *reinterpret_cast<StreamGraphHandle *>(jHandle);
00272 }

ExecStream & CmdInterpreter::getExecStreamFromLong ( jlong   )  [inline, static]

Definition at line 274 of file CmdInterpreter.h.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_tupleStreamFetch(), Java_net_sf_farrago_fennel_FennelStorage_tupleStreamRestart(), and Java_net_sf_farrago_fennel_FennelStorage_tupleStreamTransformFetch().

00275 {
00276     return *reinterpret_cast<ExecStream *>(jHandle);
00277 }

CmdInterpreter::TxnHandle & CmdInterpreter::getTxnHandleFromLong ( jlong   )  [inline, static]

Definition at line 279 of file CmdInterpreter.h.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphOpen().

00281 {
00282     return *reinterpret_cast<TxnHandle *>(jHandle);
00283 }

CmdInterpreter::ExecutionHandle & CmdInterpreter::getExecutionHandleFromLong ( jlong   )  [inline, static]

Definition at line 286 of file CmdInterpreter.h.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_cancelExecution(), Java_net_sf_farrago_fennel_FennelStorage_deleteExecutionHandle(), and Java_net_sf_farrago_fennel_FennelStorage_executeJavaCmd().

00288 {
00289     return *reinterpret_cast<ExecutionHandle *>(jHandle);
00290 }

jobject CmdInterpreter::getObjectFromLong ( jlong  jHandle  )  [inline, static]

Definition at line 262 of file CmdInterpreter.h.

Referenced by JavaSinkExecStream::open().

00263 {
00264     jobject *pGlobalRef = reinterpret_cast<jobject *>(jHandle);
00265     return *pGlobalRef;
00266 }

void CmdInterpreter::readTupleDescriptor ( TupleDescriptor tupleDesc,
ProxyTupleDescriptor javaTupleDesc,
StoredTypeDescriptorFactory const &  typeFactory 
) [static]

Reads the Java representation of a TupleDescriptor.

Parameters:
tupleDesc target TupleDescriptor
javaTupleDesc Java proxy representation
typeFactory factory for resolving type ordinals

Definition at line 759 of file CmdInterpreter.cpp.

References ProxyTupleDescriptor::getAttrDescriptor(), and StoredTypeDescriptorFactory::newDataType().

Referenced by getBTreeForIndexCmd(), Java_net_sf_farrago_fennel_FennelStorage_getAccessorXmiForTupleDescriptor(), and ExecStreamFactory::readTupleDescriptor().

00763 {
00764     tupleDesc.clear();
00765     SharedProxyTupleAttrDescriptor pAttr = javaTupleDesc.getAttrDescriptor();
00766     for (; pAttr; ++pAttr) {
00767         StoredTypeDescriptor const &typeDescriptor =
00768             typeFactory.newDataType(pAttr->getTypeOrdinal());
00769         tupleDesc.push_back(
00770             TupleAttributeDescriptor(
00771                 typeDescriptor,pAttr->isNullable(),pAttr->getByteLength()));
00772     }
00773 }

void CmdInterpreter::readTupleProjection ( TupleProjection tupleProj,
SharedProxyTupleProjection  pJavaTupleProj 
) [static]

Reads the Java representation of a TupleProjection.

Parameters:
tupleProj target TupleProjection
pJavaTupleProj Java representation

Definition at line 775 of file CmdInterpreter.cpp.

Referenced by dropOrTruncateIndex(), getBTreeForIndexCmd(), ExecStreamFactory::implementSortWithBTree(), ExecStreamFactory::readBTreeParams(), ExecStreamFactory::readBTreeReadStreamParams(), ExecStreamFactory::readBTreeSearchStreamParams(), ExecStreamSubFactory_lu::readClusterAppendParams(), ExecStreamFactory::readTableWriterStreamParams(), ExecStreamSubFactory_lu::visit(), ExecStreamFactory::visit(), and visit().

00778 {
00779     tupleProj.clear();
00780     SharedProxyTupleAttrProjection pAttr = pJavaTupleProj->getAttrProjection();
00781     for (; pAttr; ++pAttr) {
00782         tupleProj.push_back(pAttr->getAttributeIndex());
00783     }
00784 }

SharedErrorTarget CmdInterpreter::newErrorTarget ( jobject  fennelJavaErrorTarget  )  [static]

Definition at line 173 of file CmdInterpreter.cpp.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphOpen().

00175 {
00176     SharedErrorTarget errorTarget;
00177     errorTarget.reset(new JavaErrorTarget(fennelJavaErrorTarget));
00178     return errorTarget;
00179 }

virtual void FemVisitor::visit ( ProxyAggInvocation  )  [inline, virtual, inherited]

Definition at line 1460 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01461 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyAggStreamDef  )  [inline, virtual, inherited]

Definition at line 1462 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01463 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBarrierStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1464 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01465 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBeginTxnCmd  )  [inline, virtual, inherited]

Definition at line 1466 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01467 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBernoulliSamplingStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1468 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01469 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBufferReaderStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1470 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01471 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBufferWriterStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1472 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01473 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyBufferingTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1474 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01475 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCalcTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1476 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01477 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCartesianProductStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1478 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01479 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCmd  )  [inline, virtual, inherited]

Definition at line 1480 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01481 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCollectTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1530 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01531 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyColumnName  )  [inline, virtual, inherited]

Definition at line 1532 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01533 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCorrelation  )  [inline, virtual, inherited]

Definition at line 1534 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01535 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCorrelationJoinStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1536 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01537 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCsnHandle  )  [inline, virtual, inherited]

Definition at line 1538 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01539 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyCsnHandleReturningCmd  )  [inline, virtual, inherited]

Definition at line 1540 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01541 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyDatabaseCmd  )  [inline, virtual, inherited]

Definition at line 1542 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01543 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyDatabaseParam  )  [inline, virtual, inherited]

Definition at line 1544 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01545 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyDbHandle  )  [inline, virtual, inherited]

Definition at line 1546 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01547 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyDynamicParamUse  )  [inline, virtual, inherited]

Definition at line 1548 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01549 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyDynamicParameter  )  [inline, virtual, inherited]

Definition at line 1550 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01551 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyEndTxnCmd  )  [inline, virtual, inherited]

Definition at line 1552 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01553 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyExecStreamDataFlow  )  [inline, virtual, inherited]

Definition at line 1554 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01555 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyExecutionStreamDef  )  [inline, virtual, inherited]

Definition at line 1556 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01557 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyFlatFileTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1558 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01559 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyGenericStreamDef  )  [inline, virtual, inherited]

Definition at line 1560 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01561 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyHandle  )  [inline, virtual, inherited]

Definition at line 1562 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01563 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexAccessCmd  )  [inline, virtual, inherited]

Definition at line 1564 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01565 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexAccessorDef  )  [inline, virtual, inherited]

Definition at line 1566 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01567 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexCmd  )  [inline, virtual, inherited]

Definition at line 1568 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01569 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexLoaderDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1570 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01571 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexScanDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1572 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01573 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexSearchDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1574 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01575 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexStreamDef  )  [inline, virtual, inherited]

Definition at line 1576 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01577 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyIndexWriterDef  )  [inline, virtual, inherited]

Definition at line 1578 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01579 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyJavaSinkStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1580 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01581 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyJavaTransformStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1582 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01583 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyKeyAccessorDef  )  [inline, virtual, inherited]

Definition at line 1584 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01585 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmBitOpStreamDef  )  [inline, virtual, inherited]

Definition at line 1586 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01587 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmChopperStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1588 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01589 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmGeneratorStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1590 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01591 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmIntersectStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1592 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01593 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmMinusStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1594 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01595 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmNormalizerStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1596 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01597 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmSearchStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1598 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01599 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmSortedAggStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1600 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01601 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmSplicerStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1602 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01603 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLbmUnionStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1604 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01605 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLcsClusterAppendStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1606 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01607 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLcsClusterReplaceStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1608 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01609 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLcsClusterScanDef  )  [inline, virtual, inherited]

Definition at line 1610 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01611 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLcsRowScanStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 1612 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01613 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLhxAggStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1614 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01615 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyLhxJoinStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1616 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01617 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyMergeStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1618 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01619 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyMockTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1620 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01621 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyMultiUseBufferingStreamDef  )  [inline, virtual, inherited]

Definition at line 1622 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01623 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyNestedLoopJoinStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1624 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01625 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyReshapeParameter  )  [inline, virtual, inherited]

Definition at line 1626 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01627 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyReshapeStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1628 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01629 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxySortedAggStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1630 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01631 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxySortingStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1632 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01633 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxySplicerIndexAccessorDef  )  [inline, virtual, inherited]

Definition at line 1634 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01635 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxySplitterStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1636 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01637 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyStreamGraphHandle  )  [inline, virtual, inherited]

Definition at line 1638 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01639 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyStreamHandle  )  [inline, virtual, inherited]

Definition at line 1640 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01641 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxySvptHandle  )  [inline, virtual, inherited]

Definition at line 1642 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01643 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTableDeleterDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1644 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01645 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTableInserterDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1646 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01647 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTableUpdaterDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1648 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01649 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTableWriterDef  )  [inline, virtual, inherited]

Definition at line 1650 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01651 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleAccessor  )  [inline, virtual, inherited]

Definition at line 1652 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01653 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleAttrAccessor  )  [inline, virtual, inherited]

Definition at line 1654 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01655 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleAttrDescriptor  )  [inline, virtual, inherited]

Definition at line 1656 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01657 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleAttrProjection  )  [inline, virtual, inherited]

Definition at line 1658 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01659 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleDescriptor  )  [inline, virtual, inherited]

Definition at line 1660 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01661 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleProjection  )  [inline, virtual, inherited]

Definition at line 1662 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01663 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleStreamDef  )  [inline, virtual, inherited]

Definition at line 1664 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01665 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTupleStreamGraphCmd  )  [inline, virtual, inherited]

Definition at line 1666 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01667 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTxnCmd  )  [inline, virtual, inherited]

Definition at line 1668 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01669 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyTxnHandle  )  [inline, virtual, inherited]

Definition at line 1670 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01671 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyUncollectTupleStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1672 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01673 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyValuesStreamDef  )  [inline, virtual, inherited]

Reimplemented in ExecStreamFactory.

Definition at line 1674 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01675 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyWindowDef  )  [inline, virtual, inherited]

Definition at line 1676 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01677 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyWindowPartitionDef  )  [inline, virtual, inherited]

Definition at line 1678 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01679 { unhandledVisit(); }

virtual void FemVisitor::visit ( ProxyWindowStreamDef  )  [inline, virtual, inherited]

Definition at line 1680 of file FemGeneratedClasses.h.

References JniProxyVisitor::unhandledVisit().

01681 { unhandledVisit(); }

void JniProxyVisitor::unhandledVisit (  )  [virtual, inherited]

Handles case when a visitor attempts to visit a proxy whose type's visit method has not been overridden.

Default action is to throw an assertion failure; subclasses may override to ignore or whatever.

Reimplemented in ExecStreamSubFactory_lu.

Definition at line 50 of file JniProxy.cpp.

Referenced by FemVisitor::visit().

00051 {
00052     permAssert(false);
00053 }


Member Data Documentation

ExecutionHandle* CmdInterpreter::pExecHandle

Pointer to the execution handle associated with a command.

NULL if there is no handle.

Definition at line 146 of file CmdInterpreter.h.

Referenced by Java_net_sf_farrago_fennel_FennelStorage_executeJavaCmd(), and visit().

int64_t CmdInterpreter::resultHandle [protected]

Handle to be returned by current command, or 0 if none.

Have to do it this way since visit returns void; note that this makes this class stateful (each thread needs its own instance).

Definition at line 154 of file CmdInterpreter.h.

Referenced by executeCommand(), setCsnHandle(), setDbHandle(), setExecStreamHandle(), setStreamGraphHandle(), setSvptHandle(), setTxnHandle(), and visit().

JniProxyVisitTable< FemVisitor > FemVisitor::visitTbl [static, inherited]

Definition at line 1459 of file FemGeneratedClasses.h.

Referenced by ExecStreamSubFactory_lu::createStream(), executeCommand(), ExecStreamFactory::invokeVisit(), and JNI_OnLoad().


The documentation for this class was generated from the following files:
Generated on Mon Jun 22 04:00:28 2009 for Fennel by  doxygen 1.5.1