Fennel: CmdInterpreter Class Reference (original) (raw)

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

#include <[CmdInterpreter.h](CmdInterpreter%5F8h-source.html)>

Inheritance diagram for CmdInterpreter:

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 StreamGraphHandle & getStreamGraphHandleFromLong (jlong)
static ExecStream & getExecStreamFromLong (jlong)
static TxnHandle & getTxnHandleFromLong (jlong)
static ExecutionHandle & getExecutionHandleFromLong (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
ExecutionHandle * pExecHandle
Pointer to the execution handle associated with a command.
Static Public Attributes
static JniProxyVisitTable< FemVisitor > visitTbl
Protected Member Functions
virtual DbHandle * newDbHandle ()
virtual TxnHandle * newTxnHandle ()
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 JavaTraceTarget * newTraceTarget ()
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 DbHandle * getDbHandle (SharedProxyDbHandle)
static TxnHandle * getTxnHandle (SharedProxyTxnHandle)
static StreamGraphHandle * getStreamGraphHandle (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

Definition at line 79 of file CmdInterpreter.cpp.

Referenced by visit().

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

Definition at line 85 of file CmdInterpreter.cpp.

Referenced by visit().

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

| void CmdInterpreter::deleteDbHandle | ( | DbHandle * | | ) | [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().

void CmdInterpreter::dropOrTruncateIndex ( ProxyCmdDropIndex & cmd,
bool drop
) [protected]
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
00475 DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle()); 00476 SharedDatabase pDb = pDbHandle->pDb; 00477 00478 SXMutexSharedGuard actionMutexGuard( 00479 pDb->getCheckpointThread()->getActionMutex()); 00480 00481 std::auto_ptr pTxnHandle(newTxnHandle()); 00482 JniUtil::incrementHandleCount(TXNHANDLE_TRACE_TYPE_STR, pTxnHandle.get()); 00483 pTxnHandle->pDb = pDb; 00484 pTxnHandle->readOnly = readOnly; 00485
00486 pTxnHandle->pTxn = pDb->getTxnLog()->newLogicalTxn(pDb->getCache()); 00487 pTxnHandle->pResourceGovernor = pDbHandle->pResourceGovernor; 00488 00489
00490
00491 SegmentAccessor scratchAccessor; 00492 00493 pTxnHandle->pFtrsTableWriterFactory = SharedFtrsTableWriterFactory( 00494 new FtrsTableWriterFactory( 00495 pDb, 00496 pDb->getCache(), 00497 pDb->getTypeFactory(), 00498 scratchAccessor)); 00499 00500
00501
00502
00503
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 }

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 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
00674
00675
00676
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 }

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
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 }

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().

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 pDbHandle(newDbHandle()); 00203 JniUtil::incrementHandleCount(DBHANDLE_TRACE_TYPE_STR, pDbHandle.get()); 00204 00205 JavaTraceTarget *pJavaTraceTarget = newTraceTarget(); 00206 pDbHandle->pTraceTarget.reset(pJavaTraceTarget); 00207
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
00260
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 }

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(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
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
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(pParam->getValue()); 00337 SharedCache pCache = pDbHandle->pDb->getCache(); 00338
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(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 }

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().

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.

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

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

Reads the Java representation of a TupleProjection.

Parameters:

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]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

| 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


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