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

📄 localcli_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00181         descriptor_table_size = 16;00182         table = <span class="keyword">new</span> T*[descriptor_table_size];00183         T* next = NULL;00184         <span class="keywordflow">for</span> (i = 0; i &lt; descriptor_table_size; i++) {00185             table[i] = next = <span class="keyword">new</span> T(i, next);00186         }00187         this-&gt;free_chain = next;00188     }00189 00190     ~descriptor_table() { 00191         <span class="keyword">delete</span>[] table;00192     }00193 00194     T* get(<span class="keywordtype">int</span> desc) {00195         dbCriticalSection cs(this-&gt;mutex);00196         <span class="keywordflow">return</span> (desc &gt;= descriptor_table_size) ? (T*)0 : table[desc];00197     }00198 00199     T* allocate() {00200         dbCriticalSection cs(this-&gt;mutex);00201         <span class="keywordflow">if</span> (this-&gt;free_chain == NULL) {00202             <span class="keywordtype">int</span> i, n;00203             T** desc = <span class="keyword">new</span> T*[descriptor_table_size * 2];00204             memcpy(desc, table, descriptor_table_size*<span class="keyword">sizeof</span>(T*));00205             <span class="keyword">delete</span>[] table;00206             table = desc;00207             T* next = NULL;00208             <span class="keywordflow">for</span> (i = descriptor_table_size, n = i*2; i &lt; n; i++) {00209                 table[i] = next = <span class="keyword">new</span> T(i, next);00210             }00211             this-&gt;free_chain = next;00212             descriptor_table_size = n;00213         }00214         T* desc = this-&gt;free_chain;00215         this-&gt;free_chain = desc-&gt;next;00216         <span class="keywordflow">return</span> desc;00217     }00218 };00219 00220 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCLI { 00221   <span class="keyword">private</span>:00222     fixed_size_object_allocator&lt;column_binding&gt; column_allocator;00223     fixed_size_object_allocator&lt;parameter_binding&gt; parameter_allocator;00224     00225     descriptor_table&lt;session_desc&gt;   sessions;00226     descriptor_table&lt;statement_desc&gt; statements;00227 00228     session_desc* active_session_list;00229     00230     dbMutex sessionMutex;    00231     00232     <span class="keyword">static</span> <span class="keywordtype">int</span> calculate_varying_length(<span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span>&amp; nFields, cli_field_descriptor* columns);00233     <span class="keyword">static</span> <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* create_table_descriptor(<a class="code" href="classdbDatabase.html">dbDatabase</a>*           db, 00234                                                       oid_t                 oid, 00235                                                       <a class="code" href="classdbTable.html">dbTable</a>*              table, 00236                                                       <span class="keywordtype">char</span> <span class="keyword">const</span>*           tableName, 00237                                                       <span class="keywordtype">int</span>                   nFields, 00238                                                       <span class="keywordtype">int</span>                   nColumns, 00239                                                       cli_field_descriptor* columns);00240     00241   <span class="keyword">public</span>:00242     <span class="keyword">static</span> dbCLI instance;00243 00244     dbCLI() { 00245         active_session_list = NULL; 00246     }00247 00248     <span class="keywordtype">int</span> create_session(<span class="keywordtype">char</span> <span class="keyword">const</span>* databasePath,00249                        <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,00250                        <span class="keywordtype">unsigned</span>    transactionCommitDelay, 00251                        <span class="keywordtype">int</span>         openAttr, 00252                        size_t      initDatabaseSize,00253                        size_t      extensionQuantum,00254                        size_t      initIndexSize,00255                        size_t      fileSizeLimit);   00256 00257 00258     <span class="keywordtype">int</span> create_replication_node(<span class="keywordtype">int</span>         nodeId,00259                                 <span class="keywordtype">int</span>         nServers,00260                                 <span class="keywordtype">char</span>*       nodeNames[],00261                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 00262                                 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath, 00263                                 <span class="keywordtype">int</span>         openAttr, 00264                                 size_t      initDatabaseSize,00265                                 size_t      extensionQuantum,00266                                 size_t      initIndexSize,00267                                 size_t      fileSizeLimit);00268 00269     <span class="keywordtype">int</span> create_statement(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* sql);00270 00271     <span class="keywordtype">int</span> bind_parameter(<span class="keywordtype">int</span>         statement,00272                        <span class="keywordtype">char</span> <span class="keyword">const</span>* param_name,00273                        <span class="keywordtype">int</span>         var_type,00274                        <span class="keywordtype">void</span>*       var_ptr);00275 00276     <span class="keywordtype">int</span> bind_column(<span class="keywordtype">int</span>         statement,00277                     <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,00278                     <span class="keywordtype">int</span>         var_type,00279                     <span class="keywordtype">int</span>*        var_len,00280                     <span class="keywordtype">void</span>*       var_ptr);00281 00282     <span class="keywordtype">int</span> bind_array_column(<span class="keywordtype">int</span>               statement,00283                           <span class="keywordtype">char</span> <span class="keyword">const</span>*       column_name,00284                           <span class="keywordtype">int</span>               var_type,00285                           <span class="keywordtype">void</span>*             var_ptr,00286                           cli_column_set_ex set,00287                           cli_column_get_ex get,00288                           <span class="keywordtype">void</span>*             user_data);00289         00290     <span class="keywordtype">int</span> fetch(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update);00291 00292     <span class="keywordtype">int</span> fetch_columns(statement_desc* stmt);00293     <span class="keywordtype">int</span> store_columns(<span class="keywordtype">char</span>* buf, statement_desc* stmt);00294 00295     <span class="keywordtype">int</span> insert(<span class="keywordtype">int</span> statement, cli_oid_t* oid);00296     <span class="keywordtype">int</span> update(<span class="keywordtype">int</span> statement);00297 00298     <span class="keywordtype">int</span> freeze(<span class="keywordtype">int</span> statement);00299     <span class="keywordtype">int</span> unfreeze(<span class="keywordtype">int</span> statement);00300 00301     <span class="keywordtype">int</span> get_first(<span class="keywordtype">int</span> statement);00302     <span class="keywordtype">int</span> get_last(<span class="keywordtype">int</span> statement);00303     <span class="keywordtype">int</span> get_next(<span class="keywordtype">int</span> statement);00304     <span class="keywordtype">int</span> get_prev(<span class="keywordtype">int</span> statement);00305     <span class="keywordtype">int</span> skip(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> n);00306     <span class="keywordtype">int</span> seek(<span class="keywordtype">int</span> statement, cli_oid_t oid);00307 00308     cli_oid_t get_current_oid(<span class="keywordtype">int</span> statement);00309     <span class="keywordtype">int</span> free_statement(<span class="keywordtype">int</span> statement);00310     <span class="keywordtype">int</span> free_statement(statement_desc* stmt);00311     <span class="keywordtype">int</span> release_statement(statement_desc* stmt);00312     00313     <span class="keywordtype">int</span> commit(<span class="keywordtype">int</span> session);00314     <span class="keywordtype">int</span> precommit(<span class="keywordtype">int</span> session);00315     <span class="keywordtype">int</span> abort(<span class="keywordtype">int</span> session);00316 00317     <span class="keywordtype">int</span> remove(<span class="keywordtype">int</span> statement);00318     <span class="keywordtype">int</span> remove_current(<span class="keywordtype">int</span> statement);00319 00320     <span class="keywordtype">int</span> describe(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table, cli_field_descriptor** fields);00321     <span class="keywordtype">int</span> show_tables(<span class="keywordtype">int</span> session, cli_table_descriptor** tables);00322 00323     <span class="keywordtype">int</span> match_columns(<span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, statement_desc* stmt);00324 00325     <span class="keywordtype">int</span> create_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00326                      cli_field_descriptor* columns);00327     <span class="keywordtype">int</span> alter_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00328                     cli_field_descriptor* columns);00329 00330     <span class="keywordtype">int</span> drop_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName);00331 00332     <span class="keywordtype">int</span> alter_index(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fieldName, <span class="keywordtype">int</span> newFlags);00333 00334     cli_error_handler set_error_handler(<span class="keywordtype">int</span> session, cli_error_handler new_handler, <span class="keywordtype">void</span>* context);00335 00336     <span class="keywordtype">int</span> attach(<span class="keywordtype">int</span> session);00337     <span class="keywordtype">int</span> detach(<span class="keywordtype">int</span> session, <span class="keywordtype">int</span> detach_mode);00338 00339     <span class="keywordtype">int</span> get_database_state(<span class="keywordtype">int</span> session, cli_database_monitor* monitor);00340 00341     <span class="keywordtype">int</span> close(<span class="keywordtype">int</span> session);00342 00343     <span class="keywordtype">int</span> prepare_query(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* query);00344     <span class="keywordtype">int</span> execute_query(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update, <span class="keywordtype">void</span>* record_struct, va_list params);00345     <span class="keywordtype">int</span> insert_struct(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, <span class="keywordtype">void</span>* record_struct, cli_oid_t* oid);00346 00347     <span class="keywordtype">int</span> join_transaction(<span class="keywordtype">int</span> session, cli_transaction_context_t ctx);00348 00349     <span class="keyword">static</span> <span class="keywordtype">int</span> create_table(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00350                             cli_field_descriptor* columns);00351 00352     <span class="keyword">static</span> <span class="keywordtype">int</span> alter_table(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">int</span> nColumns, 00353                             cli_field_descriptor* columns);00354 00355     <span class="keyword">static</span> <span class="keywordtype">int</span> alter_index(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, <span class="keywordtype">char</span> <span class="keyword">const</span>* fieldName, <span class="keywordtype">int</span> newFlags);00356 };00357 00358 END_FASTDB_NAMESPACE00359 00360 <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 + -