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

📄 database_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00541 00542     size_t    dbFileSizeLimit;00543 00544     <span class="keywordtype">bool</span>      uncommittedChanges;00545 00546     dbFile                    file;00547     dbSharedObject&lt;dbMonitor&gt; shm;00548     dbGlobalCriticalSection   cs;00549     dbGlobalCriticalSection   mutatorCS;00550     dbInitializationMutex     initMutex;00551     dbSemaphore               writeSem; 00552     dbSemaphore               readSem; 00553     dbSemaphore               upgradeSem; 00554     dbEvent                   backupCompletedEvent;00555     dbMonitor*                monitor;00556 00557     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>*        tables;00558 00559     <span class="keywordtype">int</span>*                      bitmapPageAvailableSpace;00560     <span class="keywordtype">bool</span>                      opened;00561 00562     <span class="keywordtype">long</span>                      allocatedSize;00563     00564     time_t                    commitDelay;     00565     time_t                    commitTimeout;00566     time_t                    commitTimerStarted;00567     00568     dbMutex                   delayedCommitStartTimerMutex;00569     dbMutex                   delayedCommitStopTimerMutex;00570     dbLocalEvent              delayedCommitStartTimerEvent; 00571     dbEvent                   delayedCommitStopTimerEvent; 00572     dbLocalEvent              commitThreadSyncEvent;00573 00574     dbMutex                   backupMutex;    00575     dbLocalEvent              backupInitEvent;00576     <span class="keywordtype">char</span>*                     backupFileName;00577     time_t                    backupPeriod;00578     <span class="keywordtype">bool</span>                      stopDelayedCommitThread;00579 00580     dbThread                  backupThread;00581     dbThread                  commitThread;00582  00583     <span class="keywordtype">int</span>                       accessCount;00584 00585     dbL2List                  threadContextList;00586     dbMutex                   threadContextListMutex;00587 00588     dbErrorHandler            errorHandler;00589     <span class="keywordtype">int</span>                       schemeVersion;00590     dbVisitedObject*          visitedChain;00591 00592     <span class="keywordtype">bool</span>                      confirmDeleteColumns;00593 00594     <span class="keywordtype">void</span> delayedCommit();00595     <span class="keywordtype">void</span> backupScheduler();00596 00597     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc delayedCommitProc(<span class="keywordtype">void</span>* arg) { 00598         ((dbDatabase*)arg)-&gt;delayedCommit();00599     }00600 00601     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc backupSchedulerProc(<span class="keywordtype">void</span>* arg) { 00602         ((dbDatabase*)arg)-&gt;backupScheduler();00603     }00604 00609     <span class="keywordtype">void</span> commit(dbDatabaseThreadContext* ctx);00610 00615     <span class="keywordtype">void</span> restoreTablesConsistency();00616 <a name="l00622"></a><a class="code" href="classdbDatabase.html#dbSubSqlb4">00622</a>     <a class="code" href="classdbRecord.html">dbRecord</a>* getRow(oid_t oid) { 00623         assert(!(currIndex[oid]&amp;(dbFreeHandleMarker|dbInternalObjectMarker)));00624         <span class="keywordflow">return</span> (<a class="code" href="classdbRecord.html">dbRecord</a>*)(baseAddr + currIndex[oid]); 00625     }00626 00636     <a class="code" href="classdbRecord.html">dbRecord</a>* putRow(oid_t oid, size_t newSize); 00637 <a name="l00643"></a><a class="code" href="classdbDatabase.html#dbSubSqlb6">00643</a>     <a class="code" href="classdbRecord.html">dbRecord</a>* putRow(oid_t oid) { 00644         <span class="keywordflow">if</span> (oid &lt; committedIndexSize &amp;&amp; index[0][oid] == index[1][oid]) { 00645             size_t size = getRow(oid)-&gt;<a class="code" href="classdbRecord.html#dbTableo8">size</a>;00646             size_t pageNo = oid/dbHandlesPerPage;00647             monitor-&gt;dirtyPagesMap[pageNo &gt;&gt; 5] |= 1 &lt;&lt; (pageNo &amp; 31);00648             cloneBitmap(currIndex[oid], size);00649             allocate(size, oid);00650         } 00651         <span class="keywordflow">return</span> (<a class="code" href="classdbRecord.html">dbRecord</a>*)(baseAddr + currIndex[oid]); 00652     }00653 <a name="l00659"></a><a class="code" href="classdbDatabase.html#dbSubSqlb7">00659</a>     byte* get(oid_t oid) { 00660         <span class="keywordflow">return</span> baseAddr + (currIndex[oid] &amp; ~dbInternalObjectMarker); 00661     }00662 <a name="l00668"></a><a class="code" href="classdbDatabase.html#dbSubSqlb8">00668</a>     byte* put(oid_t oid) { 00669         <span class="keywordflow">if</span> (oid &lt; committedIndexSize &amp;&amp; index[0][oid] == index[1][oid]) { 00670             offs_t offs = currIndex[oid];00671             size_t size = internalObjectSize[offs &amp; dbInternalObjectMarker];00672             size_t pageNo = oid/dbHandlesPerPage;00673             monitor-&gt;dirtyPagesMap[pageNo &gt;&gt; 5] |= 1 &lt;&lt; (pageNo &amp; 31);00674             allocate(size, oid);00675             cloneBitmap(offs &amp; ~dbInternalObjectMarker, size);00676         } 00677         <span class="keywordflow">return</span> baseAddr + (currIndex[oid] &amp; ~dbInternalObjectMarker); 00678     }00679     00692     <span class="keywordtype">bool</span> isIndexApplicable(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, 00693                            dbExprNode* expr, dbExprNode* andExpr, 00694                            <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* &amp;indexedField);00695 00707     <span class="keywordtype">bool</span> isIndexApplicable(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, 00708                            dbExprNode* expr, dbExprNode* andExpr);00709 00722     <span class="keywordtype">bool</span> followInverseReference(dbExprNode* expr, dbExprNode* andExpr, 00723                                 <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, oid_t iref);00724 00732     <span class="keywordtype">bool</span> existsInverseReference(dbExprNode* expr, <span class="keywordtype">int</span> nExistsClauses);00733 00743     <span class="keyword">static</span> <span class="keywordtype">void</span> _fastcall execute(dbExprNode* expr, 00744                                   dbInheritedAttribute&amp; iattr,00745                                   dbSynthesizedAttribute&amp; sattr);00746 00756     <span class="keywordtype">bool</span> evaluate(dbExprNode* expr, oid_t oid, <a class="code" href="classdbTable.html">dbTable</a>* table, <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor);00757 00762     <span class="keywordtype">void</span> select(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor);00763 00769     <span class="keywordtype">void</span> select(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, <a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00770 00776     <span class="keywordtype">void</span> traverse(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, <a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00777 00784     <span class="keywordtype">void</span> update(oid_t oid, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, <span class="keywordtype">void</span> <span class="keyword">const</span>* record);00785     00791     <span class="keywordtype">void</span> remove(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, oid_t oid);00792 00800     offs_t allocate(size_t size, oid_t oid = 0);00801 00807     <span class="keywordtype">void</span> deallocate(offs_t pos, size_t size);00808 00814     <span class="keywordtype">void</span> extend(offs_t size);00815 00821     <span class="keywordtype">void</span> cloneBitmap(offs_t pos, size_t size);00822 00829     oid_t allocateId(<span class="keywordtype">int</span> n = 1);00830 00837     <span class="keywordtype">void</span> freeId(oid_t oid, <span class="keywordtype">int</span> n = 1);00838 00844     <span class="keywordtype">void</span> updateCursors(oid_t oid, <span class="keywordtype">bool</span> removed = <span class="keyword">false</span>);00845     00849     <span class="keywordtype">void</span> recovery();00850 00859     <span class="keywordtype">bool</span> checkVersion();00860 <a name="l00866"></a><a class="code" href="classdbDatabase.html#dbSubSqlb27">00866</a>     oid_t allocateObject(dbInternalObject marker) { 00867         oid_t oid = allocateId();00868         currIndex[oid] = allocate(internalObjectSize[marker]) + marker;00869         <span class="keywordflow">return</span> oid;00870     }00871 <a name="l00878"></a><a class="code" href="classdbDatabase.html#dbSubSqlb28">00878</a>     oid_t allocateRow(oid_t tableId, size_t size)00879     {00880         oid_t oid = allocateId();00881         allocateRow(tableId, oid, size);00882         <span class="keywordflow">return</span> oid;00883     }00884     00892     <span class="keywordtype">void</span> allocateRow(oid_t tableId, oid_t oid, size_t size);00893 00899     <span class="keywordtype">void</span> freeRow(oid_t tableId, oid_t oid);00900 00904     <span class="keywordtype">void</span> freeObject(oid_t oid); 00905     00909     <span class="keyword">static</span> <span class="keywordtype">void</span> deleteCompiledQuery(dbExprNode* tree); 00910 <a name="l00917"></a><a class="code" href="classdbDatabase.html#dbSubSqlx3">00917</a>     <span class="keyword">enum</span> dbLockType { 00918         dbSharedLock, 00919         dbExclusiveLock,00920         dbCommitLock00921     };00922 00923     <span class="keywordtype">bool</span> beginTransaction(dbLockType);00924 <a name="l00928"></a><a class="code" href="classdbDatabase.html#dbSubSqlb33">00928</a>     <span class="keywordtype">void</span> endTransaction() { 00929         endTransaction(threadContext.get());00930     }00931     00936     <span class="keywordtype">void</span> endTransaction(dbDatabaseThreadContext* ctx);00937 00942     <span class="keywordtype">void</span> initializeMetaTable();00943     00951     <span class="keywordtype">bool</span> loadScheme(<span class="keywordtype">bool</span> alter);00952 00958     <span class="keywordtype">bool</span> completeDescriptorsInitialization();

⌨️ 快捷键说明

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