50
52
#include <drizzled/sql_table.h>
53
int mysql_create_db(Session *session, char *db, HA_CREATE_INFO *create, bool silent);
54
bool mysql_alter_db(Session *session, const char *db, HA_CREATE_INFO *create);
55
bool mysql_rm_db(Session *session,char *db,bool if_exists, bool silent);
56
bool mysql_change_db(Session *session, const LEX_STRING *new_db_name,
55
int mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create, bool silent);
56
bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create);
57
bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent);
58
bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name,
57
59
bool force_switch);
58
bool mysql_opt_change_db(Session *session,
60
bool mysql_opt_change_db(THD *thd,
59
61
const LEX_STRING *new_db_name,
60
62
LEX_STRING *saved_db_name,
62
64
bool *cur_db_changed);
65
void write_bin_log(Session *session, bool clear_error,
67
void write_bin_log(THD *thd, bool clear_error,
66
68
char const *query, ulong query_length);
67
void mysql_binlog_send(Session* session, char* log_ident, my_off_t pos, uint16_t flags);
68
void mysql_client_binlog_statement(Session *session);
69
void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos, uint16_t flags);
70
void mysql_client_binlog_statement(THD *thd);
70
72
/* sql_rename.cc */
71
bool mysql_rename_tables(Session *session, TableList *table_list, bool silent);
72
bool do_rename(Session *session, TableList *ren_table, char *new_db,
73
bool mysql_rename_tables(THD *thd, TableList *table_list, bool silent);
74
bool do_rename(THD *thd, TableList *ren_table, char *new_db,
73
75
char *new_table_name, char *new_table_alias,
77
void mysql_parse(Session *session, const char *inBuf, uint32_t length,
79
void mysql_parse(THD *thd, const char *inBuf, uint32_t length,
78
80
const char ** semicolon);
80
bool mysql_test_parse_for_slave(Session *session,char *inBuf,uint32_t length);
82
bool mysql_test_parse_for_slave(THD *thd,char *inBuf,uint32_t length);
83
85
bool is_update_query(enum enum_sql_command command);
85
bool alloc_query(Session *session, const char *packet, uint32_t packet_length);
87
bool alloc_query(THD *thd, const char *packet, uint32_t packet_length);
87
void mysql_reset_session_for_next_command(Session *session);
89
void mysql_reset_thd_for_next_command(THD *thd);
89
91
void create_select_for_variable(const char *var_name);
123
146
/* drizzled.cc */
124
147
void kill_mysql(void);
125
void close_connection(Session *session, uint32_t errcode, bool lock);
148
void close_connection(THD *thd, uint32_t errcode, bool lock);
127
150
/* sql_select.cc */
128
Table *create_virtual_tmp_table(Session *session, List<Create_field> &field_list);
151
Table *create_virtual_tmp_table(THD *thd, List<Create_field> &field_list);
131
bool mysql_xa_recover(Session *session);
154
bool mysql_xa_recover(THD *thd);
133
156
SORT_FIELD * make_unireg_sortorder(order_st *order, uint32_t *length,
134
157
SORT_FIELD *sortorder);
135
int setup_order(Session *session, Item **ref_pointer_array, TableList *tables,
158
int setup_order(THD *thd, Item **ref_pointer_array, TableList *tables,
136
159
List<Item> &fields, List <Item> &all_fields, order_st *order);
137
int setup_group(Session *session, Item **ref_pointer_array, TableList *tables,
160
int setup_group(THD *thd, Item **ref_pointer_array, TableList *tables,
138
161
List<Item> &fields, List<Item> &all_fields, order_st *order,
139
162
bool *hidden_group_fields);
140
bool fix_inner_refs(Session *session, List<Item> &all_fields, SELECT_LEX *select,
163
bool fix_inner_refs(THD *thd, List<Item> &all_fields, SELECT_LEX *select,
141
164
Item **ref_pointer_array);
143
bool handle_select(Session *session, LEX *lex, select_result *result,
166
bool handle_select(THD *thd, LEX *lex, select_result *result,
144
167
ulong setup_tables_done_option);
145
bool mysql_select(Session *session, Item ***rref_pointer_array,
168
bool mysql_select(THD *thd, Item ***rref_pointer_array,
146
169
TableList *tables, uint32_t wild_num, List<Item> &list,
147
170
COND *conds, uint32_t og_num, order_st *order, order_st *group,
148
171
Item *having, order_st *proc_param, uint64_t select_type,
149
172
select_result *result, SELECT_LEX_UNIT *unit,
150
173
SELECT_LEX *select_lex);
151
void free_underlaid_joins(Session *session, SELECT_LEX *select);
152
bool mysql_explain_union(Session *session, SELECT_LEX_UNIT *unit,
174
void free_underlaid_joins(THD *thd, SELECT_LEX *select);
175
bool mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit,
153
176
select_result *result);
154
int mysql_explain_select(Session *session, SELECT_LEX *sl, char const *type,
177
int mysql_explain_select(THD *thd, SELECT_LEX *sl, char const *type,
155
178
select_result *result);
156
bool mysql_union(Session *session, LEX *lex, select_result *result,
179
bool mysql_union(THD *thd, LEX *lex, select_result *result,
157
180
SELECT_LEX_UNIT *unit, ulong setup_tables_done_option);
158
bool mysql_handle_derived(LEX *lex, bool (*processor)(Session *session,
181
bool mysql_handle_derived(LEX *lex, bool (*processor)(THD *thd,
160
183
TableList *table));
161
bool mysql_derived_prepare(Session *session, LEX *lex, TableList *t);
162
bool mysql_derived_filling(Session *session, LEX *lex, TableList *t);
163
Field *create_tmp_field(Session *session, Table *table,Item *item, Item::Type type,
184
bool mysql_derived_prepare(THD *thd, LEX *lex, TableList *t);
185
bool mysql_derived_filling(THD *thd, LEX *lex, TableList *t);
186
Field *create_tmp_field(THD *thd, Table *table,Item *item, Item::Type type,
164
187
Item ***copy_func, Field **from_field,
165
188
Field **def_field,
166
189
bool group, bool modify_item,
167
190
bool table_cant_handle_bit_fields,
168
191
bool make_copy_field,
169
192
uint32_t convert_blob_length);
170
void sp_prepare_create_field(Session *session, Create_field *sql_field);
193
void sp_prepare_create_field(THD *thd, Create_field *sql_field);
171
194
int prepare_create_field(Create_field *sql_field,
172
195
uint32_t *blob_columns,
173
196
int *timestamps, int *timestamps_with_niladic,
174
197
int64_t table_flags);
175
bool mysql_create_table(Session *session,const char *db, const char *table_name,
198
bool mysql_create_table(THD *thd,const char *db, const char *table_name,
176
199
HA_CREATE_INFO *create_info,
177
200
Alter_info *alter_info,
178
201
bool tmp_table, uint32_t select_field_count);
179
bool mysql_create_table_no_lock(Session *session, const char *db,
202
bool mysql_create_table_no_lock(THD *thd, const char *db,
180
203
const char *table_name,
181
204
HA_CREATE_INFO *create_info,
182
205
Alter_info *alter_info,
183
bool tmp_table, uint32_t select_field_count,
184
bool lock_open_lock);
206
bool tmp_table, uint32_t select_field_count);
186
bool mysql_alter_table(Session *session, char *new_db, char *new_name,
208
bool mysql_alter_table(THD *thd, char *new_db, char *new_name,
187
209
HA_CREATE_INFO *create_info,
188
210
TableList *table_list,
189
211
Alter_info *alter_info,
190
212
uint32_t order_num, order_st *order, bool ignore);
191
bool mysql_recreate_table(Session *session, TableList *table_list);
192
bool mysql_create_like_table(Session *session, TableList *table,
213
bool mysql_recreate_table(THD *thd, TableList *table_list);
214
bool mysql_create_like_table(THD *thd, TableList *table,
193
215
TableList *src_table,
194
216
HA_CREATE_INFO *create_info);
195
217
bool mysql_rename_table(handlerton *base, const char *old_db,
196
218
const char * old_name, const char *new_db,
197
219
const char * new_name, uint32_t flags);
198
bool mysql_prepare_update(Session *session, TableList *table_list,
220
bool mysql_prepare_update(THD *thd, TableList *table_list,
199
221
Item **conds, uint32_t order_num, order_st *order);
200
int mysql_update(Session *session,TableList *tables,List<Item> &fields,
222
int mysql_update(THD *thd,TableList *tables,List<Item> &fields,
201
223
List<Item> &values,COND *conds,
202
224
uint32_t order_num, order_st *order, ha_rows limit,
203
225
enum enum_duplicates handle_duplicates, bool ignore);
204
bool mysql_multi_update(Session *session, TableList *table_list,
226
bool mysql_multi_update(THD *thd, TableList *table_list,
205
227
List<Item> *fields, List<Item> *values,
206
228
COND *conds, uint64_t options,
207
229
enum enum_duplicates handle_duplicates, bool ignore,
208
230
SELECT_LEX_UNIT *unit, SELECT_LEX *select_lex);
209
bool mysql_prepare_insert(Session *session, TableList *table_list, Table *table,
231
bool mysql_prepare_insert(THD *thd, TableList *table_list, Table *table,
210
232
List<Item> &fields, List_item *values,
211
233
List<Item> &update_fields,
212
234
List<Item> &update_values, enum_duplicates duplic,
213
235
COND **where, bool select_insert,
214
236
bool check_fields, bool abort_on_warning);
215
bool mysql_insert(Session *session,TableList *table,List<Item> &fields,
237
bool mysql_insert(THD *thd,TableList *table,List<Item> &fields,
216
238
List<List_item> &values, List<Item> &update_fields,
217
239
List<Item> &update_values, enum_duplicates flag,
219
int check_that_all_fields_are_given_values(Session *session, Table *entry,
241
int check_that_all_fields_are_given_values(THD *thd, Table *entry,
220
242
TableList *table_list);
221
243
void prepare_triggers_for_insert_stmt(Table *table);
222
int mysql_prepare_delete(Session *session, TableList *table_list, Item **conds);
223
bool mysql_delete(Session *session, TableList *table_list, COND *conds,
244
int mysql_prepare_delete(THD *thd, TableList *table_list, Item **conds);
245
bool mysql_delete(THD *thd, TableList *table_list, COND *conds,
224
246
SQL_LIST *order, ha_rows rows, uint64_t options,
225
247
bool reset_auto_increment);
226
bool mysql_truncate(Session *session, TableList *table_list, bool dont_send_ok);
227
uint32_t create_table_def_key(Session *session, char *key, TableList *table_list,
248
bool mysql_truncate(THD *thd, TableList *table_list, bool dont_send_ok);
249
uint32_t create_table_def_key(THD *thd, char *key, TableList *table_list,
229
TABLE_SHARE *get_table_share(Session *session, TableList *table_list, char *key,
251
TABLE_SHARE *get_table_share(THD *thd, TableList *table_list, char *key,
230
252
uint32_t key_length, uint32_t db_flags, int *error);
231
253
void release_table_share(TABLE_SHARE *share, enum release_type type);
232
254
TABLE_SHARE *get_cached_table_share(const char *db, const char *table_name);
233
Table *open_ltable(Session *session, TableList *table_list, thr_lock_type update,
255
Table *open_ltable(THD *thd, TableList *table_list, thr_lock_type update,
234
256
uint32_t lock_flags);
235
Table *open_table(Session *session, TableList *table_list, bool *refresh, uint32_t flags);
236
bool name_lock_locked_table(Session *session, TableList *tables);
237
bool reopen_name_locked_table(Session* session, TableList* table_list, bool link_in);
238
Table *table_cache_insert_placeholder(Session *session, const char *key,
257
Table *open_table(THD *thd, TableList *table_list, bool *refresh, uint32_t flags);
258
bool name_lock_locked_table(THD *thd, TableList *tables);
259
bool reopen_name_locked_table(THD* thd, TableList* table_list, bool link_in);
260
Table *table_cache_insert_placeholder(THD *thd, const char *key,
239
261
uint32_t key_length);
240
bool lock_table_name_if_not_cached(Session *session, const char *db,
262
bool lock_table_name_if_not_cached(THD *thd, const char *db,
241
263
const char *table_name, Table **table);
242
Table *find_locked_table(Session *session, const char *db,const char *table_name);
264
Table *find_locked_table(THD *thd, const char *db,const char *table_name);
243
265
void detach_merge_children(Table *table, bool clear_refs);
244
266
bool fix_merge_after_open(TableList *old_child_list, TableList **old_last,
245
267
TableList *new_child_list, TableList **new_last);
246
268
bool reopen_table(Table *table);
247
bool reopen_tables(Session *session,bool get_locks,bool in_refresh);
248
void close_data_files_and_morph_locks(Session *session, const char *db,
269
bool reopen_tables(THD *thd,bool get_locks,bool in_refresh);
270
void close_data_files_and_morph_locks(THD *thd, const char *db,
249
271
const char *table_name);
250
272
void close_handle_and_leave_table_as_lock(Table *table);
251
bool open_new_frm(Session *session, TABLE_SHARE *share, const char *alias,
273
bool open_new_frm(THD *thd, TABLE_SHARE *share, const char *alias,
252
274
uint32_t db_stat, uint32_t prgflag,
253
275
uint32_t ha_open_flags, Table *outparam,
254
276
TableList *table_desc, MEM_ROOT *mem_root);
255
bool wait_for_tables(Session *session);
277
bool wait_for_tables(THD *thd);
256
278
bool table_is_used(Table *table, bool wait_for_name_lock);
257
Table *drop_locked_tables(Session *session,const char *db, const char *table_name);
258
void abort_locked_tables(Session *session,const char *db, const char *table_name);
259
void execute_init_command(Session *session, sys_var_str *init_command_var,
279
Table *drop_locked_tables(THD *thd,const char *db, const char *table_name);
280
void abort_locked_tables(THD *thd,const char *db, const char *table_name);
281
void execute_init_command(THD *thd, sys_var_str *init_command_var,
260
282
rw_lock_t *var_mutex);
261
283
extern Field *not_found_field;
262
284
extern Field *view_ref_found;
316
336
!my_strcasecmp(system_charset_info, INFORMATION_SCHEMA_NAME.str, (X))
318
338
/* sql_handler.cc */
319
bool mysql_ha_open(Session *session, TableList *tables, bool reopen);
320
bool mysql_ha_close(Session *session, TableList *tables);
321
bool mysql_ha_read(Session *, TableList *,enum enum_ha_read_modes,char *,
339
bool mysql_ha_open(THD *thd, TableList *tables, bool reopen);
340
bool mysql_ha_close(THD *thd, TableList *tables);
341
bool mysql_ha_read(THD *, TableList *,enum enum_ha_read_modes,char *,
322
342
List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows);
323
void mysql_ha_flush(Session *session);
324
void mysql_ha_rm_tables(Session *session, TableList *tables, bool is_locked);
325
void mysql_ha_cleanup(Session *session);
343
void mysql_ha_flush(THD *thd);
344
void mysql_ha_rm_tables(THD *thd, TableList *tables, bool is_locked);
345
void mysql_ha_cleanup(THD *thd);
327
347
/* sql_base.cc */
328
348
#define TMP_TABLE_KEY_EXTRA 8
329
349
void set_item_name(Item *item,char *pos,uint32_t length);
330
bool add_field_to_list(Session *session, LEX_STRING *field_name, enum enum_field_types type,
350
bool add_field_to_list(THD *thd, LEX_STRING *field_name, enum enum_field_types type,
331
351
char *length, char *decimal,
332
352
uint32_t type_modifier,
333
353
enum column_format_type column_format,
334
354
Item *default_value, Item *on_update_value,
335
355
LEX_STRING *comment,
336
356
char *change, List<String> *interval_list,
337
const CHARSET_INFO * const cs,
338
virtual_column_info *vcol_info);
339
Create_field * new_create_field(Session *session, char *field_name, enum_field_types type,
357
const CHARSET_INFO * const cs);
358
Create_field * new_create_field(THD *thd, char *field_name, enum_field_types type,
340
359
char *length, char *decimals,
341
360
uint32_t type_modifier,
342
361
Item *default_value, Item *on_update_value,
343
362
LEX_STRING *comment, char *change,
344
List<String> *interval_list, CHARSET_INFO *cs,
345
virtual_column_info *vcol_info);
363
List<String> *interval_list, CHARSET_INFO *cs);
346
364
void store_position_for_column(const char *name);
347
bool add_to_list(Session *session, SQL_LIST &list,Item *group,bool asc);
348
bool push_new_name_resolution_context(Session *session,
365
bool add_to_list(THD *thd, SQL_LIST &list,Item *group,bool asc);
366
bool push_new_name_resolution_context(THD *thd,
349
367
TableList *left_op,
350
368
TableList *right_op);
351
369
void add_join_on(TableList *b,Item *expr);
352
370
void add_join_natural(TableList *a,TableList *b,List<String> *using_fields,
353
371
SELECT_LEX *lex);
354
bool add_proc_to_list(Session *session, Item *item);
355
void unlink_open_table(Session *session, Table *find, bool unlock);
356
void drop_open_table(Session *session, Table *table, const char *db_name,
372
bool add_proc_to_list(THD *thd, Item *item);
373
void unlink_open_table(THD *thd, Table *find, bool unlock);
374
void drop_open_table(THD *thd, Table *table, const char *db_name,
357
375
const char *table_name);
358
376
void update_non_unique_table_error(TableList *update,
359
377
const char *operation,
395
413
enum_resolution_type *resolution);
396
414
bool get_key_map_from_key_list(key_map *map, Table *table,
397
415
List<String> *index_list);
398
bool insert_fields(Session *session, Name_resolution_context *context,
416
bool insert_fields(THD *thd, Name_resolution_context *context,
399
417
const char *db_name, const char *table_name,
400
418
List_iterator<Item> *it, bool any_privileges);
401
bool setup_tables(Session *session, Name_resolution_context *context,
419
bool setup_tables(THD *thd, Name_resolution_context *context,
402
420
List<TableList> *from_clause, TableList *tables,
403
421
TableList **leaves, bool select_insert);
404
bool setup_tables_and_check_access(Session *session,
422
bool setup_tables_and_check_access(THD *thd,
405
423
Name_resolution_context *context,
406
424
List<TableList> *from_clause,
407
425
TableList *tables,
408
426
TableList **leaves,
409
427
bool select_insert);
410
int setup_wild(Session *session, TableList *tables, List<Item> &fields,
428
int setup_wild(THD *thd, TableList *tables, List<Item> &fields,
411
429
List<Item> *sum_func_list, uint32_t wild_num);
412
bool setup_fields(Session *session, Item** ref_pointer_array,
430
bool setup_fields(THD *thd, Item** ref_pointer_array,
413
431
List<Item> &item, enum_mark_columns mark_used_columns,
414
432
List<Item> *sum_func_list, bool allow_sum_func);
415
inline bool setup_fields_with_no_wrap(Session *session, Item **ref_pointer_array,
433
inline bool setup_fields_with_no_wrap(THD *thd, Item **ref_pointer_array,
416
434
List<Item> &item,
417
435
enum_mark_columns mark_used_columns,
418
436
List<Item> *sum_func_list,
419
437
bool allow_sum_func)
422
res= setup_fields(session, ref_pointer_array, item, mark_used_columns, sum_func_list,
440
res= setup_fields(thd, ref_pointer_array, item, mark_used_columns, sum_func_list,
426
int setup_conds(Session *session, TableList *tables, TableList *leaves,
444
int setup_conds(THD *thd, TableList *tables, TableList *leaves,
428
446
int setup_ftfuncs(SELECT_LEX* select);
429
int init_ftfuncs(Session *session, SELECT_LEX* select, bool no_order);
430
void wait_for_condition(Session *session, pthread_mutex_t *mutex,
447
int init_ftfuncs(THD *thd, SELECT_LEX* select, bool no_order);
448
void wait_for_condition(THD *thd, pthread_mutex_t *mutex,
431
449
pthread_cond_t *cond);
432
int open_tables(Session *session, TableList **tables, uint32_t *counter, uint32_t flags);
450
int open_tables(THD *thd, TableList **tables, uint32_t *counter, uint32_t flags);
433
451
/* open_and_lock_tables with optional derived handling */
434
int open_and_lock_tables_derived(Session *session, TableList *tables, bool derived);
452
int open_and_lock_tables_derived(THD *thd, TableList *tables, bool derived);
435
453
/* simple open_and_lock_tables without derived handling */
436
inline int simple_open_n_lock_tables(Session *session, TableList *tables)
454
inline int simple_open_n_lock_tables(THD *thd, TableList *tables)
438
return open_and_lock_tables_derived(session, tables, false);
456
return open_and_lock_tables_derived(thd, tables, false);
440
458
/* open_and_lock_tables with derived handling */
441
inline int open_and_lock_tables(Session *session, TableList *tables)
459
inline int open_and_lock_tables(THD *thd, TableList *tables)
443
return open_and_lock_tables_derived(session, tables, true);
461
return open_and_lock_tables_derived(thd, tables, true);
445
463
/* simple open_and_lock_tables without derived handling for single table */
446
Table *open_n_lock_single_table(Session *session, TableList *table_l,
464
Table *open_n_lock_single_table(THD *thd, TableList *table_l,
447
465
thr_lock_type lock_type);
448
bool open_normal_and_derived_tables(Session *session, TableList *tables, uint32_t flags);
449
int lock_tables(Session *session, TableList *tables, uint32_t counter, bool *need_reopen);
450
int decide_logging_format(Session *session, TableList *tables);
451
Table *open_temporary_table(Session *session, const char *path, const char *db,
466
bool open_normal_and_derived_tables(THD *thd, TableList *tables, uint32_t flags);
467
int lock_tables(THD *thd, TableList *tables, uint32_t counter, bool *need_reopen);
468
int decide_logging_format(THD *thd, TableList *tables);
469
Table *open_temporary_table(THD *thd, const char *path, const char *db,
452
470
const char *table_name, bool link_in_list,
453
471
open_table_mode open_mode);
454
472
bool rm_temporary_table(handlerton *base, char *path, bool frm_only);
455
473
void free_io_cache(Table *entry);
456
474
void intern_close_table(Table *entry);
457
bool close_thread_table(Session *session, Table **table_ptr);
458
void close_temporary_tables(Session *session);
459
void close_tables_for_reopen(Session *session, TableList **tables);
475
bool close_thread_table(THD *thd, Table **table_ptr);
476
void close_temporary_tables(THD *thd);
477
void close_tables_for_reopen(THD *thd, TableList **tables);
460
478
TableList *find_table_in_list(TableList *table,
461
479
TableList *TableList::*link,
462
480
const char *db_name,
463
481
const char *table_name);
464
TableList *unique_table(Session *session, TableList *table, TableList *table_list,
482
TableList *unique_table(THD *thd, TableList *table, TableList *table_list,
465
483
bool check_alias);
466
Table *find_temporary_table(Session *session, const char *db, const char *table_name);
467
Table *find_temporary_table(Session *session, TableList *table_list);
468
int drop_temporary_table(Session *session, TableList *table_list);
469
void close_temporary_table(Session *session, Table *table, bool free_share,
484
Table *find_temporary_table(THD *thd, const char *db, const char *table_name);
485
Table *find_temporary_table(THD *thd, TableList *table_list);
486
int drop_temporary_table(THD *thd, TableList *table_list);
487
void close_temporary_table(THD *thd, Table *table, bool free_share,
470
488
bool delete_table);
471
489
void close_temporary(Table *table, bool free_share, bool delete_table);
472
bool rename_temporary_table(Session* session, Table *table, const char *new_db,
490
bool rename_temporary_table(THD* thd, Table *table, const char *new_db,
473
491
const char *table_name);
474
492
void remove_db_from_cache(const char *db);
475
493
void flush_tables();
752
773
#define DRIZZLE_LOCK_IGNORE_GLOBAL_READ_ONLY 0x0010
753
774
#define DRIZZLE_LOCK_PERF_SCHEMA 0x0020
755
void mysql_unlock_tables(Session *session, DRIZZLE_LOCK *sql_lock);
756
void mysql_unlock_read_tables(Session *session, DRIZZLE_LOCK *sql_lock);
757
void mysql_unlock_some_tables(Session *session, Table **table,uint32_t count);
758
void mysql_lock_remove(Session *session, DRIZZLE_LOCK *locked,Table *table,
776
void mysql_unlock_tables(THD *thd, DRIZZLE_LOCK *sql_lock);
777
void mysql_unlock_read_tables(THD *thd, DRIZZLE_LOCK *sql_lock);
778
void mysql_unlock_some_tables(THD *thd, Table **table,uint32_t count);
779
void mysql_lock_remove(THD *thd, DRIZZLE_LOCK *locked,Table *table,
759
780
bool always_unlock);
760
void mysql_lock_abort(Session *session, Table *table, bool upgrade_lock);
761
void mysql_lock_downgrade_write(Session *session, Table *table,
781
void mysql_lock_abort(THD *thd, Table *table, bool upgrade_lock);
782
void mysql_lock_downgrade_write(THD *thd, Table *table,
762
783
thr_lock_type new_lock_type);
763
bool mysql_lock_abort_for_thread(Session *session, Table *table);
784
bool mysql_lock_abort_for_thread(THD *thd, Table *table);
764
785
DRIZZLE_LOCK *mysql_lock_merge(DRIZZLE_LOCK *a,DRIZZLE_LOCK *b);
765
TableList *mysql_lock_have_duplicate(Session *session, TableList *needle,
786
TableList *mysql_lock_have_duplicate(THD *thd, TableList *needle,
766
787
TableList *haystack);
767
bool lock_global_read_lock(Session *session);
768
void unlock_global_read_lock(Session *session);
769
bool wait_if_global_read_lock(Session *session, bool abort_on_refresh,
788
bool lock_global_read_lock(THD *thd);
789
void unlock_global_read_lock(THD *thd);
790
bool wait_if_global_read_lock(THD *thd, bool abort_on_refresh,
770
791
bool is_not_commit);
771
void start_waiting_global_read_lock(Session *session);
772
bool make_global_read_lock_block_commit(Session *session);
792
void start_waiting_global_read_lock(THD *thd);
793
bool make_global_read_lock_block_commit(THD *thd);
773
794
bool set_protect_against_global_read_lock(void);
774
795
void unset_protect_against_global_read_lock(void);
775
796
void broadcast_refresh(void);
776
int try_transactional_lock(Session *session, TableList *table_list);
777
int check_transactional_lock(Session *session, TableList *table_list);
778
int set_handler_table_locks(Session *session, TableList *table_list,
797
int try_transactional_lock(THD *thd, TableList *table_list);
798
int check_transactional_lock(THD *thd, TableList *table_list);
799
int set_handler_table_locks(THD *thd, TableList *table_list,
779
800
bool transactional);
781
802
/* Lock based on name */
782
int lock_and_wait_for_table_name(Session *session, TableList *table_list);
783
int lock_table_name(Session *session, TableList *table_list, bool check_in_use);
784
void unlock_table_name(Session *session, TableList *table_list);
785
bool wait_for_locked_table_names(Session *session, TableList *table_list);
786
bool lock_table_names(Session *session, TableList *table_list);
787
void unlock_table_names(Session *session, TableList *table_list,
803
int lock_and_wait_for_table_name(THD *thd, TableList *table_list);
804
int lock_table_name(THD *thd, TableList *table_list, bool check_in_use);
805
void unlock_table_name(THD *thd, TableList *table_list);
806
bool wait_for_locked_table_names(THD *thd, TableList *table_list);
807
bool lock_table_names(THD *thd, TableList *table_list);
808
void unlock_table_names(THD *thd, TableList *table_list,
788
809
TableList *last_table);
789
bool lock_table_names_exclusively(Session *session, TableList *table_list);
790
bool is_table_name_exclusively_locked_by_this_thread(Session *session,
810
bool lock_table_names_exclusively(THD *thd, TableList *table_list);
811
bool is_table_name_exclusively_locked_by_this_thread(THD *thd,
791
812
TableList *table_list);
792
bool is_table_name_exclusively_locked_by_this_thread(Session *session, unsigned char *key,
813
bool is_table_name_exclusively_locked_by_this_thread(THD *thd, unsigned char *key,
1062
return true if the table was created explicitly.
1064
inline bool is_user_table(Table * table)
1066
const char *name= table->s->table_name.str;
1067
return strncmp(name, tmp_file_prefix, tmp_file_prefix_length);
1073
This will be slightly slower and perhaps a tiny bit less accurate than
1074
doing it the IEEE754 way but log2() should be available on C99 systems.
1076
static inline double log2(double x)
1078
return (log(x) / M_LN2);
1041
1084
Some functions that are different in the embedded library and the normal
1045
1088
extern "C" void unireg_abort(int exit_code) __attribute__((noreturn));
1046
bool check_stack_overrun(Session *session, long margin, unsigned char *dummy);
1089
void kill_delayed_threads(void);
1090
bool check_stack_overrun(THD *thd, long margin, unsigned char *dummy);
1093
* Used by handlers to store things in schema tables
1095
* @TODO These should be placed in an information_schema.h header
1096
* file once the new information schema design is finalized.
1098
#define IS_FILES_FILE_ID 0
1099
#define IS_FILES_FILE_NAME 1
1100
#define IS_FILES_FILE_TYPE 2
1101
#define IS_FILES_TABLESPACE_NAME 3
1102
#define IS_FILES_TABLE_CATALOG 4
1103
#define IS_FILES_TABLE_SCHEMA 5
1104
#define IS_FILES_TABLE_NAME 6
1105
#define IS_FILES_LOGFILE_GROUP_NAME 7
1106
#define IS_FILES_LOGFILE_GROUP_NUMBER 8
1107
#define IS_FILES_ENGINE 9
1108
#define IS_FILES_FULLTEXT_KEYS 10
1109
#define IS_FILES_DELETED_ROWS 11
1110
#define IS_FILES_UPDATE_COUNT 12
1111
#define IS_FILES_FREE_EXTENTS 13
1112
#define IS_FILES_TOTAL_EXTENTS 14
1113
#define IS_FILES_EXTENT_SIZE 15
1114
#define IS_FILES_INITIAL_SIZE 16
1115
#define IS_FILES_MAXIMUM_SIZE 17
1116
#define IS_FILES_AUTOEXTEND_SIZE 18
1117
#define IS_FILES_CREATION_TIME 19
1118
#define IS_FILES_LAST_UPDATE_TIME 20
1119
#define IS_FILES_LAST_ACCESS_TIME 21
1120
#define IS_FILES_RECOVER_TIME 22
1121
#define IS_FILES_TRANSACTION_COUNTER 23
1122
#define IS_FILES_VERSION 24
1123
#define IS_FILES_ROW_FORMAT 25
1124
#define IS_FILES_TABLE_ROWS 26
1125
#define IS_FILES_AVG_ROW_LENGTH 27
1126
#define IS_FILES_DATA_LENGTH 28
1127
#define IS_FILES_MAX_DATA_LENGTH 29
1128
#define IS_FILES_INDEX_LENGTH 30
1129
#define IS_FILES_DATA_FREE 31
1130
#define IS_FILES_CREATE_TIME 32
1131
#define IS_FILES_UPDATE_TIME 33
1132
#define IS_FILES_CHECK_TIME 34
1133
#define IS_FILES_CHECKSUM 35
1134
#define IS_FILES_STATUS 36
1135
#define IS_FILES_EXTRA 37
1048
1137
#endif /* DRIZZLE_SERVER_SERVER_INCLUDES_H */