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

📄 database_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 4 页
字号:
01089     <span class="keyword">static</span> <span class="keywordtype">void</span> deleteCompiledQuery(dbExprNode* tree); 01090 <a name="l01097"></a><a class="code" href="classdbDatabase.html#dbSubSqlt3">01097</a>     <span class="keyword">enum</span> dbLockType { 01098         dbSharedLock, 01099         dbExclusiveLock,01100         dbCommitLock01101     };01102 01103     <span class="keywordtype">bool</span> beginTransaction(dbLockType);01104 <a name="l01108"></a><a class="code" href="classdbDatabase.html#dbSubSqlb37">01108</a>     <span class="keywordtype">void</span> endTransaction() { 01109         endTransaction(threadContext.get());01110     }01111     01116     <span class="keywordtype">void</span> endTransaction(dbDatabaseThreadContext* ctx);01117 01122     <span class="keywordtype">void</span> initializeMetaTable();01123     01131     <span class="keywordtype">bool</span> loadScheme(<span class="keywordtype">bool</span> alter);01132 01138     <span class="keywordtype">bool</span> completeDescriptorsInitialization();01139 01145     <span class="keywordtype">void</span> reformatTable(oid_t tableId, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01146 01154     <span class="keywordtype">bool</span> addIndices(<span class="keywordtype">bool</span> alter, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01155 01161     oid_t addNewTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01162 01168     <span class="keywordtype">void</span> updateTableDescriptor(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t tableId);01169 01178     <span class="keywordtype">void</span> insertInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 01179                                 oid_t reverseId, oid_t targetId);01180 01186     <span class="keywordtype">void</span> removeInverseReferences(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t oid);01187 01196     <span class="keywordtype">void</span> removeInverseReference(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, 01197                                 oid_t reverseId, oid_t targetId);01198 01203     <span class="keywordtype">void</span> deleteTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01204 01209     <span class="keywordtype">void</span> dropTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);01210 01215     <span class="keywordtype">void</span> createIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01216 01221     <span class="keywordtype">void</span> createHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01222 01227     <span class="keywordtype">void</span> dropIndex(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01228 01233     <span class="keywordtype">void</span> dropHashTable(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);01234 01240     <span class="keywordtype">void</span> linkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, oid_t tableId);01241 01246     <span class="keywordtype">void</span> unlinkTable(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table);01247 01254     <span class="keywordtype">bool</span> wasReserved(offs_t pos, size_t size);01255 01264     <span class="keywordtype">void</span> reserveLocation(dbLocation&amp; location, offs_t pos, size_t size);01265 01270     <span class="keywordtype">void</span> commitLocation();01271 01277     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTable(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01278     01285     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* findTableByName(<span class="keywordtype">char</span> <span class="keyword">const</span>* name);01286 <a name="l01291"></a><a class="code" href="classdbDatabase.html#dbSubSqlb62">01291</a>     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* getTables() { 01292         <span class="keywordflow">return</span> tables;01293     }01294 01298     <span class="keywordtype">void</span> setDirty();01299 };01300 01301 01302 <span class="preprocessor">#ifdef REPLICATION_SUPPORT</span>01303 <span class="preprocessor"></span>01304 <span class="preprocessor">#include "sockio.h"</span>01305 01306 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbConnection { 01307  <span class="keyword">public</span>:01308     socket_t*    reqSock;01309     socket_t*    respSock;01310     dbLocalEvent statusEvent;01311     dbLocalEvent readyEvent;01312     dbLocalEvent useEvent;01313     dbMutex      writeCS;01314     <span class="keywordtype">int</span>          useCount;01315     <span class="keywordtype">int</span>          waitUseEventFlag;01316     <span class="keywordtype">int</span>          waitStatusEventFlag;01317     <span class="keywordtype">int</span>          status;01318     <span class="keywordtype">int</span>          updateCounter;01319 01320     dbConnection() { 01321         readyEvent.open();01322         useEvent.open();01323         statusEvent.open();01324         useCount = 0;01325         waitUseEventFlag = 0;01326         waitStatusEventFlag = 0;01327         status = 0;01328         reqSock = respSock = NULL;01329     }01330     ~dbConnection() { 01331         readyEvent.close();01332         useEvent.close();01333         statusEvent.close();01334         <span class="keyword">delete</span> reqSock;01335         <span class="keyword">delete</span> respSock;01336     }01337 }; 01338 01339 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbReplicatedDatabase : <span class="keyword">public</span> dbDatabase {01340     <span class="keyword">friend</span> <span class="keyword">class </span>dbFile;01341   <span class="keyword">protected</span>:01342     <span class="keywordtype">char</span>**        serverURL;01343     <span class="keywordtype">int</span>           nServers;01344     <span class="keywordtype">int</span>           id;01345     dbConnection* con;01346 01347     <span class="keyword">enum</span> NodeStatus { 01348         ST_OFFLINE,  <span class="comment">// node is not available </span>01349         ST_ONLINE,   <span class="comment">// node is available </span>01350         ST_ACTIVE,   <span class="comment">// primary node is running, replicating changes</span>01351         ST_STANDBY,  <span class="comment">// standby node receives changes from primary node</span>01352         ST_RECOVERED <span class="comment">// node is recovered after the fault</span>01353     };01354     01355     dbLocalEvent  startEvent;01356     dbLocalEvent  recoveredEvent;01357     dbMutex       startCS;01358     fd_set        inputSD;01359     <span class="keywordtype">int</span>           nInputSD;01360 01361     <span class="keywordtype">int</span>           activeNodeId;01362     dbMutex       sockCS;01363     socket_t*     acceptSock;01364     dbThread      readerThread;01365 01366     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc startReader(<span class="keywordtype">void</span>* arg);01367 01368     <span class="keywordtype">void</span> reader();01369     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isReplicated();01370 01371   <span class="keyword">public</span>:01372     <span class="keywordtype">void</span> deleteConnection(<span class="keywordtype">int</span> nodeId);01373     <span class="keywordtype">void</span> lockConnection(<span class="keywordtype">int</span> nodeId);01374     <span class="keywordtype">void</span> unlockConnection(<span class="keywordtype">int</span> nodeId);01375     <span class="keywordtype">void</span> changeActiveNode();01376     <span class="keywordtype">void</span> addConnection(<span class="keywordtype">int</span> nodeId, socket_t* s);01377     <span class="keywordtype">bool</span> writeReq(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr, 01378                   <span class="keywordtype">void</span>* body = NULL, size_t bodySize = 0);01379     <span class="keywordtype">bool</span> writeResp(<span class="keywordtype">int</span> nodeId, ReplicationRequest <span class="keyword">const</span>&amp; hdr);01380 01381     <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla6">open</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fileName,01382               <span class="keywordtype">int</span> id, <span class="keywordtype">char</span>* servers[], <span class="keywordtype">int</span> nServers);01383     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classdbDatabase.html#dbSubSqla7">close</a>();01384 01385     <span class="keywordtype">int</span> getNumberOfOnlineNodes();01386 01387     <span class="keyword">static</span> <span class="keywordtype">int</span> dbPollInterval;01388     <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitReadyTimeout;01389     <span class="keyword">static</span> <span class="keywordtype">int</span> dbWaitStatusTimeout;01390     <span class="keyword">static</span> <span class="keywordtype">int</span> dbRecoveryConnectionAttempts;01391     <span class="keyword">static</span> <span class="keywordtype">int</span> dbStartupConnectionAttempts;01392 01393     dbReplicatedDatabase(dbAccessType type = dbAllAccess,01394                          size_t dbInitSize = dbDefaultInitDatabaseSize,01395                          size_t dbExtensionQuantum = dbDefaultExtensionQuantum,01396                          size_t dbInitIndexSize = dbDefaultInitIndexSize,01397                          <span class="keywordtype">int</span> nThreads = 1)01398         : dbDatabase(type, dbInitSize, dbExtensionQuantum, dbInitIndexSize, nThreads)01399     {}01400 };01401 <span class="preprocessor">#endif</span>01402 <span class="preprocessor"></span>01403 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;01404 <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> insert(T <span class="keyword">const</span>&amp; record) { 01405     <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> ref;01406     T::dbDescriptor.getDatabase()-&gt;insertRecord(&amp;T::dbDescriptor, &amp;ref, &amp;record);01407     <span class="keywordflow">return</span> ref;01408 }01409 01410 <span class="preprocessor">#ifdef NO_MEMBER_TEMPLATES</span>01411 <span class="preprocessor"></span><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;01412 <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> insert(dbDatabase&amp; db, T <span class="keyword">const</span>&amp; record) {01413     <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> ref;01414     db.<a class="code" href="classdbDatabase.html#dbSubSqla30">insertRecord</a>(db.<a class="code" href="classdbDatabase.html#dbSubSqla38">lookupTable</a>(&amp;T::dbDescriptor), &amp;ref, &amp;record);01415     <span class="keywordflow">return</span> ref;01416 }01417 <span class="preprocessor">#endif</span>01418 <span class="preprocessor"></span><a name="l01422"></a><a class="code" href="classdbSearchContext.html">01422</a> <span class="keyword">class </span><a class="code" href="classdbSearchContext.html">dbSearchContext</a> { 01423   <span class="keyword">public</span>:01424     dbDatabase*     db;01425     dbExprNode*     condition;01426     <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>*    cursor;01427     <span class="keywordtype">char</span>*           firstKey;01428     <span class="keywordtype">int</span>             firstKeyInclusion;01429     <span class="keywordtype">char</span>*           lastKey;01430     <span class="keywordtype">int</span>             lastKeyInclusion;01431     <span class="keywordtype">int</span>             type;01432     <span class="keywordtype">int</span>             sizeofType;01433     <span class="keywordtype">int</span>             prefixLength;01434     dbUDTComparator comparator;01435     <span class="keywordtype">int</span>             offs;01436     <span class="keywordtype">int</span>             probes;01437 };01438 01439 01440 END_FASTDB_NAMESPACE01441 01442 <span class="preprocessor">#endif</span></pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>

⌨️ 快捷键说明

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