📄 localcli_8h-source.html
字号:
00167 free_chain = next;00168 }00169 00170 ~descriptor_table() { 00171 <span class="keyword">delete</span>[] table;00172 }00173 00174 T* get(<span class="keywordtype">int</span> desc) {00175 dbCriticalSection cs(mutex);00176 <span class="keywordflow">return</span> (desc >= descriptor_table_size) ? (T*)0 : table[desc];00177 }00178 00179 T* allocate() {00180 dbCriticalSection cs(mutex);00181 <span class="keywordflow">if</span> (free_chain == NULL) {00182 <span class="keywordtype">int</span> i, n;00183 T** desc = <span class="keyword">new</span> T*[descriptor_table_size * 2];00184 memcpy(desc, table, descriptor_table_size*<span class="keyword">sizeof</span>(T*));00185 <span class="keyword">delete</span>[] table;00186 table = desc;00187 T* next = NULL;00188 <span class="keywordflow">for</span> (i = descriptor_table_size, n = i*2; i < n; i++) {00189 table[i] = next = <span class="keyword">new</span> T(i, next);00190 }00191 free_chain = next;00192 descriptor_table_size = n;00193 }00194 T* desc = free_chain;00195 free_chain = desc->next;00196 <span class="keywordflow">return</span> desc;00197 }00198 };00199 00200 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCLI { 00201 <span class="keyword">private</span>:00202 fixed_size_object_allocator<column_binding> column_allocator;00203 fixed_size_object_allocator<parameter_binding> parameter_allocator;00204 00205 descriptor_table<session_desc> sessions;00206 descriptor_table<statement_desc> statements;00207 00208 session_desc* active_session_list;00209 00210 dbMutex sessionMutex; 00211 00212 <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>& nFields, cli_field_descriptor* columns);00213 <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, 00214 oid_t oid, 00215 <a class="code" href="classdbTable.html">dbTable</a>* table, 00216 <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName, 00217 <span class="keywordtype">int</span> nFields, 00218 <span class="keywordtype">int</span> nColumns, 00219 cli_field_descriptor* columns);00220 00221 <span class="keyword">public</span>:00222 <span class="keyword">static</span> dbCLI instance;00223 00224 dbCLI() { 00225 active_session_list = NULL; 00226 }00227 00228 <span class="keywordtype">int</span> create_session(<span class="keywordtype">char</span> <span class="keyword">const</span>* databasePath,00229 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,00230 <span class="keywordtype">unsigned</span> transactionCommitDelay, 00231 <span class="keywordtype">int</span> openAttr, 00232 size_t initDatabaseSize,00233 size_t extensionQuantum,00234 size_t initIndexSize,00235 size_t fileSizeLimit); 00236 00237 00238 <span class="keywordtype">int</span> create_replication_node(<span class="keywordtype">int</span> nodeId,00239 <span class="keywordtype">int</span> nServers,00240 <span class="keywordtype">char</span>* nodeNames[],00241 <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName, 00242 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath, 00243 <span class="keywordtype">int</span> openAttr, 00244 size_t initDatabaseSize,00245 size_t extensionQuantum,00246 size_t initIndexSize,00247 size_t fileSizeLimit);00248 00249 <span class="keywordtype">int</span> create_statement(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* sql);00250 00251 <span class="keywordtype">int</span> bind_parameter(<span class="keywordtype">int</span> statement,00252 <span class="keywordtype">char</span> <span class="keyword">const</span>* param_name,00253 <span class="keywordtype">int</span> var_type,00254 <span class="keywordtype">void</span>* var_ptr);00255 00256 <span class="keywordtype">int</span> bind_column(<span class="keywordtype">int</span> statement,00257 <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,00258 <span class="keywordtype">int</span> var_type,00259 <span class="keywordtype">int</span>* var_len,00260 <span class="keywordtype">void</span>* var_ptr);00261 00262 <span class="keywordtype">int</span> bind_array_column(<span class="keywordtype">int</span> statement,00263 <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,00264 <span class="keywordtype">int</span> var_type,00265 <span class="keywordtype">void</span>* var_ptr,00266 cli_column_set_ex set,00267 cli_column_get_ex get);00268 00269 <span class="keywordtype">int</span> fetch(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update);00270 00271 <span class="keywordtype">int</span> fetch_columns(statement_desc* stmt);00272 <span class="keywordtype">int</span> store_columns(<span class="keywordtype">char</span>* buf, statement_desc* stmt);00273 00274 <span class="keywordtype">int</span> insert(<span class="keywordtype">int</span> statement, cli_oid_t* oid);00275 <span class="keywordtype">int</span> update(<span class="keywordtype">int</span> statement);00276 00277 <span class="keywordtype">int</span> freeze(<span class="keywordtype">int</span> statement);00278 <span class="keywordtype">int</span> unfreeze(<span class="keywordtype">int</span> statement);00279 00280 <span class="keywordtype">int</span> get_first(<span class="keywordtype">int</span> statement);00281 <span class="keywordtype">int</span> get_last(<span class="keywordtype">int</span> statement);00282 <span class="keywordtype">int</span> get_next(<span class="keywordtype">int</span> statement);00283 <span class="keywordtype">int</span> get_prev(<span class="keywordtype">int</span> statement);00284 <span class="keywordtype">int</span> skip(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> n);00285 <span class="keywordtype">int</span> seek(<span class="keywordtype">int</span> statement, cli_oid_t oid);00286 00287 cli_oid_t get_current_oid(<span class="keywordtype">int</span> statement);00288 <span class="keywordtype">int</span> free_statement(<span class="keywordtype">int</span> statement);00289 <span class="keywordtype">int</span> free_statement(statement_desc* stmt);00290 00291 <span class="keywordtype">int</span> commit(<span class="keywordtype">int</span> session);00292 <span class="keywordtype">int</span> precommit(<span class="keywordtype">int</span> session);00293 <span class="keywordtype">int</span> abort(<span class="keywordtype">int</span> session);00294 00295 <span class="keywordtype">int</span> remove(<span class="keywordtype">int</span> statement);00296 00297 <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);00298 <span class="keywordtype">int</span> show_tables(<span class="keywordtype">int</span> session, cli_table_descriptor** tables);00299 00300 <span class="keywordtype">int</span> match_columns(<span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, statement_desc* stmt);00301 00302 <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, 00303 cli_field_descriptor* columns);00304 <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, 00305 cli_field_descriptor* columns);00306 00307 <span class="keywordtype">int</span> drop_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName);00308 00309 <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);00310 00311 cli_error_handler set_error_handler(<span class="keywordtype">int</span> session, cli_error_handler new_handler);00312 00313 <span class="keywordtype">int</span> attach(<span class="keywordtype">int</span> session);00314 <span class="keywordtype">int</span> detach(<span class="keywordtype">int</span> session, <span class="keywordtype">int</span> detach_mode);00315 00316 <span class="keywordtype">int</span> get_database_state(<span class="keywordtype">int</span> session, cli_database_monitor* monitor);00317 00318 <span class="keywordtype">int</span> close(<span class="keywordtype">int</span> session);00319 00320 <span class="keywordtype">int</span> prepare_query(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* query);00321 <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);00322 <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);00323 00324 <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, 00325 cli_field_descriptor* columns);00326 00327 <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, 00328 cli_field_descriptor* columns);00329 00330 <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);00331 };</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:48 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -