⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00234     <span class="keywordtype">int</span>         clientId;00235     <a class="code" href="classdbDatabase.html">dbDatabase</a>* db;00236     dbMutex*    mutex;00237 };00238 <span class="preprocessor">#endif</span>00239 <span class="preprocessor"></span>00240 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; 00241 <span class="keyword">class </span>dbHArray;00242 <a name="l00246"></a><a class="code" href="classdbDatabase.html">00246</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbDatabase { 00247     <span class="keyword">friend</span> <span class="keyword">class </span>dbSelection;00248     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>;00249     <span class="keyword">friend</span> <span class="keyword">class </span>dbHashTable;00250     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;00251     <span class="keyword">friend</span> <span class="keyword">class </span>dbTtree;00252     <span class="keyword">friend</span> <span class="keyword">class </span>dbTtreeNode;00253     <span class="keyword">friend</span> <span class="keyword">class </span>dbRtree;00254     <span class="keyword">friend</span> <span class="keyword">class </span>dbRtreePage;00255     <span class="keyword">friend</span> <span class="keyword">class </span>dbParallelQueryContext; 00256     <span class="keyword">friend</span> <span class="keyword">class </span>dbServer;00257     <span class="keyword">friend</span> <span class="keyword">class </span>dbColumnBinding;00258     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbUserFunctionArgument.html">dbUserFunctionArgument</a>;00259     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyContainer.html">dbAnyContainer</a>;00260     <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;00261     <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;00262     <span class="keyword">friend</span> <span class="keyword">class </span>GiSTdb;00263 00264 <span class="preprocessor">#ifdef HAS_TEMPLATE_FRIENDS</span>00265 <span class="preprocessor"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; 00266     <span class="keyword">friend</span> <span class="keyword">class </span>dbHArray;00267 <span class="preprocessor">#else</span>00268 <span class="preprocessor"></span>    <span class="keyword">friend</span> <span class="keyword">class </span>dbAnyHArray;00269 <span class="preprocessor">#endif</span>00270 <span class="preprocessor"></span>00271   <span class="keyword">public</span>:00281     <span class="keywordtype">bool</span> open(<span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 00282               <span class="keywordtype">char</span> <span class="keyword">const</span>* fileName = NULL, 00283               time_t waitLockTimeoutMsec = INFINITE, 00284               time_t commitDelaySec = 0);00285 00289     <span class="keywordtype">void</span> close();00290 00294     <span class="keywordtype">void</span> commit();00295 00300     <span class="keywordtype">void</span> precommit();00301     00305     <span class="keywordtype">void</span> rollback();00306 00313     <span class="keywordtype">void</span> scheduleBackup(<span class="keywordtype">char</span> <span class="keyword">const</span>* fileName, time_t periodSec);00314     00319     <span class="keywordtype">void</span> attach();00320     00326     <span class="keywordtype">void</span> attach(dbDatabaseThreadContext* ctx);00327 00328     <span class="keyword">enum</span> DetachFlags { 00329         COMMIT          = 1,00330         DESTROY_CONTEXT = 200331     };00336     <span class="keywordtype">void</span> detach(<span class="keywordtype">int</span> flags = COMMIT|DESTROY_CONTEXT);00337 <a name="l00341"></a><a class="code" href="classdbDatabase.html#dbSubSqla15">00341</a>     <span class="keywordtype">void</span> lock() { beginTransaction(dbExclusiveLock); }00342 00351     <span class="keywordtype">bool</span> backup(<span class="keywordtype">char</span> <span class="keyword">const</span>* file, <span class="keywordtype">bool</span> compactify);00352     00362     <span class="keywordtype">bool</span> backup(dbFile* file, <span class="keywordtype">bool</span> compactify);00363     <a name="l00368"></a><a class="code" href="classdbDatabase.html#dbSubSqla18">00368</a>     <span class="keywordtype">void</span> assign(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>&amp; desc) { 00369         assert(((<span class="keywordtype">void</span>)<span class="stringliteral">"Table is not yet assigned to the database"</span>, 00370                 desc.<a class="code" href="classdbTableDescriptor.html#dbTableDescriptorn3">tableId</a> == 0));00371         desc.<a class="code" href="classdbTableDescriptor.html#dbTableDescriptorn10">db</a> = <span class="keyword">this</span>; 00372         desc.<a class="code" href="classdbTableDescriptor.html#dbTableDescriptorn11">fixedDatabase</a> = <span class="keyword">true</span>;00373     }00374 00382     <span class="keywordtype">void</span> setConcurrency(<span class="keywordtype">unsigned</span> nThreads);00383 <a name="l00388"></a><a class="code" href="classdbDatabase.html#dbSubSqla20">00388</a>     <span class="keywordtype">long</span> getAllocatedSize() { <span class="keywordflow">return</span> allocatedSize; }00389 <a name="l00394"></a><a class="code" href="classdbDatabase.html#dbSubSqla21">00394</a>     <span class="keywordtype">long</span> getDatabaseSize() { <span class="keywordflow">return</span> header-&gt;size; }00395 <a name="l00400"></a><a class="code" href="classdbDatabase.html#dbSubSqla22">00400</a>     <span class="keywordtype">int</span> getNumberOfReaders() { 00401         <span class="keywordflow">return</span> monitor-&gt;nReaders;00402     }00403 <a name="l00408"></a><a class="code" href="classdbDatabase.html#dbSubSqla23">00408</a>     <span class="keywordtype">int</span> getNumberOfWriters() { 00409         <span class="keywordflow">return</span> monitor-&gt;nWriters;00410     }00411 <a name="l00416"></a><a class="code" href="classdbDatabase.html#dbSubSqla24">00416</a>     <span class="keywordtype">int</span> getNumberOfBlockedReaders() { 00417         <span class="keywordflow">return</span> monitor-&gt;nReaders;00418     }00419 <a name="l00424"></a><a class="code" href="classdbDatabase.html#dbSubSqla25">00424</a>     <span class="keywordtype">int</span> getNumberOfBlockedWriters() { 00425         <span class="keywordflow">return</span> monitor-&gt;nWriters;00426     }00427 <a name="l00432"></a><a class="code" href="classdbDatabase.html#dbSubSqla26">00432</a>     <span class="keywordtype">int</span> getNumberOfUsers() { 00433         <span class="keywordflow">return</span> monitor-&gt;users;00434     }00435 <a name="l00443"></a><a class="code" href="classdbDatabase.html#dbSubSqla27">00443</a>     <span class="keywordtype">void</span> allowColumnsDeletion(<span class="keywordtype">bool</span> enabled = <span class="keyword">true</span>) { 00444         confirmDeleteColumns = enabled;00445     }00446 00454     <span class="keywordtype">bool</span> prepareQuery(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, <a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00455 00456     <span class="keyword">enum</span> dbErrorClass { 00457         NoError, 00458         QueryError,00459         ArithmeticError,00460         IndexOutOfRangeError,00461         DatabaseOpenError,00462         FileError,00463         OutOfMemoryError,00464         Deadlock,00465         NullReferenceError,00466         LockRevoked,00467         FileLimitExeeded,00468         InconsistentInverseReference,00469         DatabaseReadOnly00470     };00471     <span class="keyword">typedef</span> void (*dbErrorHandler)(<span class="keywordtype">int</span> error, <span class="keywordtype">char</span> <span class="keyword">const</span>* msg, <span class="keywordtype">int</span> msgarg, <span class="keywordtype">void</span>* context); 00472 00478     dbErrorHandler setErrorHandler(dbErrorHandler newHandler, <span class="keywordtype">void</span>* errorHandlerContext = NULL);00479 00487     <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleError(dbErrorClass error, <span class="keywordtype">char</span> <span class="keyword">const</span>* msg = NULL, 00488                              <span class="keywordtype">int</span> arg = 0); 00489 00496     <span class="keywordtype">void</span> insertRecord(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, <a class="code" href="classdbAnyReference.html">dbAnyReference</a>* ref, 00497                       <span class="keywordtype">void</span> <span class="keyword">const</span>* record);00498 <a name="l00502"></a><a class="code" href="classdbDatabase.html#dbSubSqla31">00502</a>     <span class="keywordtype">bool</span> isOpen()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> opened; }00503 00504 00508     <span class="keywordtype">bool</span> isCommitted();00509 00513     <span class="keywordtype">bool</span> isAttached();00514 00518     <span class="keywordtype">bool</span> isUpdateTransaction();00519 00523     <span class="keywordtype">int</span>  getVersion();00524 <a name="l00529"></a><a class="code" href="classdbDatabase.html#dbSubSqla36">00529</a>     <span class="keywordtype">void</span> setFileSizeLimit(size_t limit) { 00530         dbFileSizeLimit = limit;00531     }00532 00533 <span class="preprocessor">#ifdef FUZZY_CHECKPOINT</span>00534 <span class="preprocessor"></span>00539     <span class="keywordtype">void</span> setFuzzyCheckpointBuffer(size_t nPages) { 00540         file.setCheckpointBufferSize(nPages);00541     }00542 <span class="preprocessor">#endif</span>00543 <span class="preprocessor"></span>00544 <span class="preprocessor">#ifndef NO_MEMBER_TEMPLATES</span>00545 <span class="preprocessor"></span>00550     <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;<a name="l00551"></a><a class="code" href="classdbDatabase.html#dbSubSqla37">00551</a>     <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> insert(T <span class="keyword">const</span>&amp; record) {00552         <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> ref;00553         insertRecord(lookupTable(&amp;T::dbDescriptor), &amp;ref, &amp;record);00554         <span class="keywordflow">return</span> ref;00555     }00556 <span class="preprocessor">#endif</span>00557 <span class="preprocessor"></span>00563     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* lookupTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);00564 00569     <span class="keywordtype">void</span> getMemoryStatistic(dbMemoryStatistic&amp; stat);00570 00571     <span class="keyword">enum</span> dbAccessType { 00572         dbReadOnly,00573         dbAllAccess,00574         dbConcurrentRead,00575         dbConcurrentUpdate00576     };00588     dbDatabase(dbAccessType type = dbAllAccess,00589                size_t dbInitSize = dbDefaultInitDatabaseSize,00590                size_t dbExtensionQuantum = dbDefaultExtensionQuantum,00591                size_t dbInitIndexSize = dbDefaultInitIndexSize,00592                <span class="keywordtype">int</span> nThreads = 1 00593                <span class="comment">// Do not specify the last parameter - it is only for checking</span>00594                <span class="comment">// that application and FastDB library were built with the </span>00595                <span class="comment">// same compiler options (-DNO_PTHREADS is critical)</span>00596                <span class="comment">// Mismached parameters should cause linker error</span>00597 #ifdef NO_PTHREADS00598                , <span class="keywordtype">bool</span> usePthreads = <span class="keyword">false</span>00599 #endif00600                );00604     <span class="keyword">virtual</span> ~dbDatabase(); 00605 00606     <span class="keyword">const</span> dbAccessType accessType;00607     <span class="keyword">const</span> size_t initSize;00608     <span class="keyword">const</span> size_t extensionQuantum;00609     <span class="keyword">const</span> size_t initIndexSize;00610 00611     <span class="keyword">static</span> <span class="keywordtype">unsigned</span> dbParallelScanThreshold; 00612 00613   <span class="keyword">protected</span>:00614     <span class="keyword">static</span> size_t internalObjectSize[];00615 00616     dbThreadPool threadPool;00617 00618     dbThreadContext&lt;dbDatabaseThreadContext&gt; threadContext;00619 00620     byte*     baseAddr;         <span class="comment">// base address of database file mapping</span>00621     <a class="code" href="classdbHeader.html">dbHeader</a>* header;           <span class="comment">// database header information</span>00622     offs_t*   currIndex;        <span class="comment">// current database object index</span>00623     offs_t*   index[2];00624     <span class="keywordtype">unsigned</span>  parThreads;00625     <span class="keywordtype">bool</span>      modified;00626 00627     size_t    currRBitmapPage;  <span class="comment">//current bitmap page for allocating records</span>00628     size_t    currRBitmapOffs;  <span class="comment">//offset in current bitmap page for allocating</span>00629                                 <span class="comment">//unaligned records</span>00630     size_t    currPBitmapPage;  <span class="comment">//current bitmap page for allocating page objects</span>00631     size_t    currPBitmapOffs;  <span class="comment">//offset in current bitmap page for allocating</span>00632                                 <span class="comment">//page objects</span>00633     <span class="keyword">struct </span>dbLocation { 00634         offs_t      pos;00635         size_t      size;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -