📄 database_8h-source.html
字号:
00224 <span class="keywordtype">int</span> nConcurrentWriters;
00225 <span class="keywordtype">int</span> nWaitReaders;
00226 <span class="keywordtype">int</span> nWaitWriters;
00227 <span class="keywordtype">int</span> waitForUpgrade;
00228 <span class="keywordtype">int</span> forceCommitCount;
00229 <span class="keywordtype">int</span> backupInProgress;
00230 <span class="keywordtype">int</span> uncommittedChanges;
00231
00232 <span class="keywordtype">int</span> curr; <span class="comment">// copy of header->root, used to allow read access </span>
00233 <span class="comment">// to the database during transaction commit</span>
00234 offs_t size; <span class="comment">// database size</span>
00235
00236 <span class="keywordtype">int</span> commitInProgress;
00237 <span class="keywordtype">int</span> concurrentTransId;
00238
00239 <span class="keywordtype">unsigned</span> lastDeadlockRecoveryTime;
00240
00241 <span class="keywordtype">int</span> version;
00242 <span class="keywordtype">int</span> users;
00243
00244 dbProcessId ownerPid;
00245
00246 dbDatabaseThreadContext* delayedCommitContext; <span class="comment">// save context of delayed transaction</span>
00247
00248 int4 dirtyPagesMap[dbDirtyPageBitmapSize/4];
00249
00250 <span class="keywordtype">int</span> sharedLockOwner[dbMaxReaders];
00251 <span class="keywordtype">int</span> exclusiveLockOwner;
00252 <span class="keywordtype">int</span> clientId;
00253 <span class="keywordtype">int</span> upgradeId;
00254
00255 <span class="keywordtype">int</span> modified;
00256
00257 <span class="preprocessor">#ifdef DO_NOT_REUSE_OID_WITHIN_SESSION</span>
00258 <span class="preprocessor"></span> <span class="keyword">struct </span>{
00259 oid_t head;
00260 oid_t tail;
00261 } sessionFreeList[2];
00262 <span class="preprocessor">#endif</span>
00263 <span class="preprocessor"></span>};
00264
<a name="l00268"></a><a class="code" href="classdbL2List.html">00268</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY <a class="code" href="classdbL2List.html">dbL2List</a> {
00269 <span class="keyword">public</span>:
00270 <a class="code" href="classdbL2List.html">dbL2List</a>* next;
00271 <a class="code" href="classdbL2List.html">dbL2List</a>* prev;
00272
00273 <span class="keywordtype">void</span> link(<a class="code" href="classdbL2List.html">dbL2List</a>* elem) {
00274 elem-><a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = <span class="keyword">this</span>;
00275 elem-><a class="code" href="classdbL2List.html#dbL2Listm0">next</a> = next;
00276 next = next-><a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = elem;
00277 }
00278 <span class="keywordtype">void</span> unlink() {
00279 next-><a class="code" href="classdbL2List.html#dbL2Listm1">prev</a> = prev;
00280 prev-><a class="code" href="classdbL2List.html#dbL2Listm0">next</a> = next;
00281 next = prev = <span class="keyword">this</span>;
00282 }
00283 <span class="keywordtype">bool</span> isEmpty() {
00284 <span class="keywordflow">return</span> next == <span class="keyword">this</span>;
00285 }
00286 <span class="keywordtype">void</span> reset() {
00287 next = prev = <span class="keyword">this</span>;
00288 }
00289 <a class="code" href="classdbL2List.html">dbL2List</a>() {
00290 next = prev = <span class="keyword">this</span>;
00291 }
00292 ~<a class="code" href="classdbL2List.html">dbL2List</a>() {
00293 unlink();
00294 }
00295 };
00296
00297 <span class="keyword">class </span>dbVisitedObject {
00298 <span class="keyword">public</span>:
00299 dbVisitedObject* next;
00300 oid_t oid;
00301
00302 dbVisitedObject(oid_t oid, dbVisitedObject* chain) {
00303 this->oid = oid;
00304 next = chain;
00305 }
00306 };
00307
00308 <span class="preprocessor">#ifdef AUTO_DETECT_PROCESS_CRASH</span>
00309 <span class="preprocessor"></span><span class="keyword">struct </span>dbWatchDogContext : <a class="code" href="classdbL2List.html">dbL2List</a> {
00310 dbThread thread;
00311 dbWatchDog watchDog;
00312 <span class="keywordtype">int</span> clientId;
00313 <a class="code" href="classdbDatabase.html">dbDatabase</a>* db;
00314 dbMutex* mutex;
00315 };
00316 <span class="preprocessor">#endif</span>
00317 <span class="preprocessor"></span>
00318 <span class="keyword">template</span><<span class="keyword">class</span> T>
00319 <span class="keyword">class </span>dbHArray;
00320
00321 <span class="keyword">class </span>dbXmlContext;
00322 <span class="keyword">class </span>dbXmlScanner;
00323
00324 <span class="keyword">typedef</span> unsigned (*dbHashFunction)(byte* key, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> keylen);
00325
<a name="l00329"></a><a class="code" href="classdbDatabase.html">00329</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbDatabase {
00330 <span class="keyword">friend</span> <span class="keyword">class </span>dbSelection;
00331 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>;
00332 <span class="keyword">friend</span> <span class="keyword">class </span>dbHashTable;
00333 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;
00334 <span class="keyword">friend</span> <span class="keyword">class </span>dbTtree;
00335 <span class="keyword">friend</span> <span class="keyword">class </span>dbTtreeNode;
00336 <span class="keyword">friend</span> <span class="keyword">class </span>dbRtree;
00337 <span class="keyword">friend</span> <span class="keyword">class </span>dbRtreePage;
00338 <span class="keyword">friend</span> <span class="keyword">class </span>dbParallelQueryContext;
00339 <span class="keyword">friend</span> <span class="keyword">class </span>dbServer;
00340 <span class="keyword">friend</span> <span class="keyword">class </span>dbColumnBinding;
00341 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbUserFunctionArgument.html">dbUserFunctionArgument</a>;
00342 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyContainer.html">dbAnyContainer</a>;
00343 <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;
00344 <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;
00345 <span class="keyword">friend</span> <span class="keyword">class </span>GiSTdb;
00346
00347 <span class="preprocessor">#ifdef HAS_TEMPLATE_FRIENDS</span>
00348 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">class</span> T>
00349 <span class="keyword">friend</span> <span class="keyword">class </span>dbHArray;
00350 <span class="preprocessor">#else</span>
00351 <span class="preprocessor"></span> <span class="keyword">friend</span> <span class="keyword">class </span>dbAnyHArray;
00352 <span class="preprocessor">#endif</span>
00353 <span class="preprocessor"></span>
00354 <span class="keyword">public</span>:
00364 <span class="keywordtype">bool</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName,
00365 <span class="keywordtype">char</span> <span class="keyword">const</span>* fileName = NULL,
00366 time_t waitLockTimeoutMsec = INFINITE,
00367 time_t commitDelaySec = 0);
00368
00369 <span class="keyword">enum</span> dbAccessType {
00370 dbReadOnly,
00371 dbAllAccess,
00372 dbConcurrentRead,
00373 dbConcurrentUpdate
00374 };
00375
<a name="l00379"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html">00379</a> <span class="keyword">struct </span><a class="code" href="structdbDatabase_1_1OpenParameters.html">OpenParameters</a> {
<a name="l00383"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm0">00383</a> <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName;
00384
<a name="l00388"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm1">00388</a> <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseFilePath;
00389
<a name="l00393"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm2">00393</a> time_t transactionCommitDelay;
00394
<a name="l00398"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm3">00398</a> time_t waitLockTimeoutMsec;
00399
<a name="l00403"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm4">00403</a> dbAccessType accessType;
00404
<a name="l00408"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm5">00408</a> size_t initSize;
00409
<a name="l00413"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm6">00413</a> size_t extensionQuantum;
00414
<a name="l00418"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm7">00418</a> size_t initIndexSize;
00419
<a name="l00423"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm8">00423</a> <span class="keywordtype">int</span> nThreads;
00424
<a name="l00429"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm9">00429</a> offs_t freeSpaceReuseThreshold;
00430
<a name="l00434"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm10">00434</a> <span class="keywordtype">int</span> parallelScanThreshold;
00435
<a name="l00439"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm11">00439</a> <span class="keywordtype">int</span> nodeId;
00440
<a name="l00444"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm12">00444</a> <span class="keywordtype">char</span>** nodeAddresses;
00445
<a name="l00449"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm13">00449</a> <span class="keywordtype">int</span> nNodes;
00450
<a name="l00454"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm14">00454</a> <span class="keywordtype">int</span> pollInterval; <span class="comment">// milliseconds</span>
00455
<a name="l00459"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm15">00459</a> <span class="keywordtype">int</span> waitReadyTimeout; <span class="comment">// milliseconds</span>
00460
<a name="l00464"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm16">00464</a> <span class="keywordtype">int</span> waitStatusTimeout; <span class="comment">// milliseconds </span>
00465
<a name="l00469"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm17">00469</a> <span class="keywordtype">int</span> recoveryConnectionAttempts;
00470
<a name="l00474"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm18">00474</a> <span class="keywordtype">int</span> startupConnectionAttempts;
00475
<a name="l00481"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm19">00481</a> <span class="keywordtype">int</span> replicationWriteTimeout;
00482
<a name="l00488"></a><a class="code" href="structdbDatabase_1_1OpenParameters.html#dbDatabase_1_1OpenParametersm20">00488</a> <span class="keywordtype">int</span> maxAsyncRecoveryIterations;
00489
00490 <a class="code" href="structdbDatabase_1_1OpenParameters.html">OpenParameters</a>() {
00491 databaseName = NULL;
00492 databaseFilePath = NULL;
00493 transactionCommitDelay = 0;
00494 waitLockTimeoutMsec = INFINITE;
00495 accessType = dbAllAccess;
00496 extensionQuantum = dbDefaultExtensionQuantum;
00497 initSize = dbDefaultInitDatabaseSize;
00498 initIndexSize = dbDefaultInitIndexSize;
00499 nThreads = 1;
00500 freeSpaceReuseThreshold = dbDefaultExtensionQuantum;
00501 nodeId = 0;
00502 nodeAddresses = NULL;
00503 nNodes = 0;
00504 parallelScanThreshold = dbDefaultParallelScanThreshold;
00505 pollInterval = dbDefaultPollInterval;
00506 waitReadyTimeout = dbWaitReadyTimeout;
00507 waitStatusTimeout = dbWaitStatusTimeout;
00508 recoveryConnectionAttempts = dbRecoveryConnectionAttempts;
00509 startupConnectionAttempts = dbStartupConnectionAttempts;
00510 replicationWriteTimeout = dbReplicationWriteTimeout;
00511 maxAsyncRecoveryIterations = dbMaxAsyncRecoveryIterations;
00512 }
00513 };
00514
00520 <span class="keywordtype">bool</span> open(OpenParameters& params);
00521
00525 <span class="keywordtype">void</span> close();
00526
00530 <span class="keywordtype">void</span> commit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -