📄 localcli_8h-source.html
字号:
00182 T* next = NULL;
00183 <span class="keywordflow">for</span> (i = 0; i < descriptor_table_size; i++) {
00184 table[i] = next = <span class="keyword">new</span> T(i, next);
00185 }
00186 this->free_chain = next;
00187 }
00188
00189 ~descriptor_table() {
00190 <span class="keyword">delete</span>[] table;
00191 }
00192
00193 T* get(<span class="keywordtype">int</span> desc) {
00194 dbCriticalSection cs(this->mutex);
00195 <span class="keywordflow">return</span> (desc >= descriptor_table_size) ? (T*)0 : table[desc];
00196 }
00197
00198 T* allocate() {
00199 dbCriticalSection cs(this->mutex);
00200 <span class="keywordflow">if</span> (this->free_chain == NULL) {
00201 <span class="keywordtype">int</span> i, n;
00202 T** desc = <span class="keyword">new</span> T*[descriptor_table_size * 2];
00203 memcpy(desc, table, descriptor_table_size*<span class="keyword">sizeof</span>(T*));
00204 <span class="keyword">delete</span>[] table;
00205 table = desc;
00206 T* next = NULL;
00207 <span class="keywordflow">for</span> (i = descriptor_table_size, n = i*2; i < n; i++) {
00208 table[i] = next = <span class="keyword">new</span> T(i, next);
00209 }
00210 this->free_chain = next;
00211 descriptor_table_size = n;
00212 }
00213 T* desc = this->free_chain;
00214 this->free_chain = desc->next;
00215 <span class="keywordflow">return</span> desc;
00216 }
00217 };
00218
00219 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCLI {
00220 <span class="keyword">private</span>:
00221 fixed_size_object_allocator<column_binding> column_allocator;
00222 fixed_size_object_allocator<parameter_binding> parameter_allocator;
00223
00224 descriptor_table<session_desc> sessions;
00225 descriptor_table<statement_desc> statements;
00226
00227 session_desc* active_session_list;
00228
00229 dbMutex sessionMutex;
00230
00231 <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);
00232 <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,
00233 oid_t oid,
00234 <a class="code" href="classdbTable.html">dbTable</a>* table,
00235 <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName,
00236 <span class="keywordtype">int</span> nFields,
00237 <span class="keywordtype">int</span> nColumns,
00238 cli_field_descriptor* columns);
00239
00240 <span class="keyword">public</span>:
00241 <span class="keyword">static</span> dbCLI instance;
00242
00243 dbCLI() {
00244 active_session_list = NULL;
00245 }
00246
00247 <span class="keywordtype">int</span> create_session(<span class="keywordtype">char</span> <span class="keyword">const</span>* databasePath,
00248 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,
00249 <span class="keywordtype">unsigned</span> transactionCommitDelay,
00250 <span class="keywordtype">int</span> openAttr,
00251 size_t initDatabaseSize,
00252 size_t extensionQuantum,
00253 size_t initIndexSize,
00254 size_t fileSizeLimit);
00255
00256
00257 <span class="keywordtype">int</span> create_replication_node(<span class="keywordtype">int</span> nodeId,
00258 <span class="keywordtype">int</span> nServers,
00259 <span class="keywordtype">char</span>* nodeNames[],
00260 <span class="keywordtype">char</span> <span class="keyword">const</span>* databaseName,
00261 <span class="keywordtype">char</span> <span class="keyword">const</span>* filePath,
00262 <span class="keywordtype">int</span> openAttr,
00263 size_t initDatabaseSize,
00264 size_t extensionQuantum,
00265 size_t initIndexSize,
00266 size_t fileSizeLimit);
00267
00268 <span class="keywordtype">int</span> create_statement(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* sql);
00269
00270 <span class="keywordtype">int</span> bind_parameter(<span class="keywordtype">int</span> statement,
00271 <span class="keywordtype">char</span> <span class="keyword">const</span>* param_name,
00272 <span class="keywordtype">int</span> var_type,
00273 <span class="keywordtype">void</span>* var_ptr);
00274
00275 <span class="keywordtype">int</span> bind_column(<span class="keywordtype">int</span> statement,
00276 <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,
00277 <span class="keywordtype">int</span> var_type,
00278 <span class="keywordtype">int</span>* var_len,
00279 <span class="keywordtype">void</span>* var_ptr);
00280
00281 <span class="keywordtype">int</span> bind_array_column(<span class="keywordtype">int</span> statement,
00282 <span class="keywordtype">char</span> <span class="keyword">const</span>* column_name,
00283 <span class="keywordtype">int</span> var_type,
00284 <span class="keywordtype">void</span>* var_ptr,
00285 cli_column_set_ex set,
00286 cli_column_get_ex get,
00287 <span class="keywordtype">void</span>* user_data);
00288
00289 <span class="keywordtype">int</span> fetch(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> for_update);
00290
00291 <span class="keywordtype">int</span> fetch_columns(statement_desc* stmt);
00292 <span class="keywordtype">int</span> store_columns(<span class="keywordtype">char</span>* buf, statement_desc* stmt, <span class="keywordtype">bool</span> insert);
00293
00294 <span class="keywordtype">int</span> insert(<span class="keywordtype">int</span> statement, cli_oid_t* oid);
00295 <span class="keywordtype">int</span> update(<span class="keywordtype">int</span> statement);
00296
00297 <span class="keywordtype">int</span> close_cursor(<span class="keywordtype">int</span> statement);
00298
00299 <span class="keywordtype">int</span> freeze(<span class="keywordtype">int</span> statement);
00300 <span class="keywordtype">int</span> unfreeze(<span class="keywordtype">int</span> statement);
00301
00302 <span class="keywordtype">int</span> get_first(<span class="keywordtype">int</span> statement);
00303 <span class="keywordtype">int</span> get_last(<span class="keywordtype">int</span> statement);
00304 <span class="keywordtype">int</span> get_next(<span class="keywordtype">int</span> statement);
00305 <span class="keywordtype">int</span> get_prev(<span class="keywordtype">int</span> statement);
00306 <span class="keywordtype">int</span> skip(<span class="keywordtype">int</span> statement, <span class="keywordtype">int</span> n);
00307 <span class="keywordtype">int</span> seek(<span class="keywordtype">int</span> statement, cli_oid_t oid);
00308
00309 cli_oid_t get_current_oid(<span class="keywordtype">int</span> statement);
00310 <span class="keywordtype">int</span> free_statement(<span class="keywordtype">int</span> statement);
00311 <span class="keywordtype">int</span> free_statement(statement_desc* stmt);
00312 <span class="keywordtype">int</span> release_statement(statement_desc* stmt);
00313
00314 <span class="keywordtype">int</span> commit(<span class="keywordtype">int</span> session);
00315 <span class="keywordtype">int</span> precommit(<span class="keywordtype">int</span> session);
00316 <span class="keywordtype">int</span> abort(<span class="keywordtype">int</span> session);
00317
00318 <span class="keywordtype">int</span> remove(<span class="keywordtype">int</span> statement);
00319 <span class="keywordtype">int</span> remove_current(<span class="keywordtype">int</span> statement);
00320
00321 <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);
00322 <span class="keywordtype">int</span> describe_layout(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* table, cli_field_layout** fields, <span class="keywordtype">int</span>* rec_size);
00323 <span class="keywordtype">int</span> show_tables(<span class="keywordtype">int</span> session, cli_table_descriptor** tables);
00324
00325 <span class="keywordtype">int</span> match_columns(<span class="keywordtype">char</span> <span class="keyword">const</span>* table_name, statement_desc* stmt);
00326
00327 <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,
00328 cli_field_descriptor* columns);
00329 <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,
00330 cli_field_descriptor* columns);
00331
00332 <span class="keywordtype">int</span> drop_table(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* tableName);
00333
00334 <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);
00335
00336 cli_error_handler set_error_handler(<span class="keywordtype">int</span> session, cli_error_handler new_handler, <span class="keywordtype">void</span>* context);
00337
00338 <span class="keywordtype">int</span> attach(<span class="keywordtype">int</span> session);
00339 <span class="keywordtype">int</span> detach(<span class="keywordtype">int</span> session, <span class="keywordtype">int</span> detach_mode);
00340
00341 <span class="keywordtype">int</span> get_database_state(<span class="keywordtype">int</span> session, cli_database_monitor* monitor);
00342
00343 <span class="keywordtype">int</span> close(<span class="keywordtype">int</span> session);
00344
00345 <span class="keywordtype">int</span> prepare_query(<span class="keywordtype">int</span> session, <span class="keywordtype">char</span> <span class="keyword">const</span>* query);
00346 <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);
00347 <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, <span class="keywordtype">int</span> n_params, <span class="keywordtype">int</span>* param_types, <span class="keywordtype">void</span>** param_values);
00348 <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);
00349
00350 <span class="keywordtype">int</span> join_transaction(<span class="keywordtype">int</span> session, cli_transaction_context_t ctx);
00351
00352 <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,
00353 cli_field_descriptor* columns);
00354
00355 <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,
00356 cli_field_descriptor* columns);
00357
00358 <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);
00359 };
00360
00361 END_FASTDB_NAMESPACE
00362
00363 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 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 + -