CUBRID Engine
latest
|
#include "dbtype_def.h"
#include "file_manager.h"
#include "list_file.h"
#include "storage_common.h"
#include "thread_compat.hpp"
Go to the source code of this file.
Classes | |
struct | qmgr_temp_file |
struct | qmgr_wait_args |
struct | qmgr_query_entry |
Macros | |
#define | qmgr_free_old_page_and_init(thread_p, page_p, tfile_vfidp) |
#define | NULL_PAGEID_IN_PROGRESS -2 |
Typedefs | |
typedef struct qmgr_temp_file | QMGR_TEMP_FILE |
typedef struct qmgr_wait_args | QMGR_WAIT_ARGS |
typedef struct qmgr_query_entry | QMGR_QUERY_ENTRY |
#define NULL_PAGEID_IN_PROGRESS -2 |
Definition at line 50 of file query_manager.h.
Referenced by qfile_has_next_page(), and xqfile_get_list_file_page().
#define qmgr_free_old_page_and_init | ( | thread_p, | |
page_p, | |||
tfile_vfidp | |||
) |
Definition at line 42 of file query_manager.h.
Referenced by qexec_analytic_put_next(), qexec_clear_analytic_state(), qexec_clear_groupby_state(), qexec_execute_analytic(), qexec_execute_connect_by(), qexec_gby_put_next(), qexec_groupby(), qexec_hash_gby_put_next(), qexec_ordby_put_next(), qfile_add_overflow_tuple_to_list(), qfile_clear_sort_info(), qfile_close_list(), qfile_close_scan(), qfile_copy_list_pages(), qfile_end_scan_fix(), qfile_get_tuple(), qfile_jump_scan_tuple_position(), qfile_put_next_sort_item(), qfile_scan_next(), qfile_scan_prev(), qfile_set_tuple_column_value(), scan_hash_probe_next(), sqmgr_execute_query(), sqmgr_prepare_and_execute_query(), and xqfile_get_list_file_page().
typedef struct qmgr_query_entry QMGR_QUERY_ENTRY |
Definition at line 122 of file query_manager.h.
typedef struct qmgr_temp_file QMGR_TEMP_FILE |
Definition at line 75 of file query_manager.h.
typedef struct qmgr_wait_args QMGR_WAIT_ARGS |
Definition at line 94 of file query_manager.h.
enum QMGR_QUERY_STATUS |
Enumerator | |
---|---|
QUERY_IN_PROGRESS | |
QUERY_COMPLETED | |
QUERY_CLOSED |
Definition at line 115 of file query_manager.h.
enum QMGR_QUERY_TYPE |
Enumerator | |
---|---|
OTHERS | |
M_QUERY | |
UNION_QUERY | |
VALUE_QUERY | |
GROUPBY_QUERY | |
ORDERBY_QUERY | |
DISTINCT_QUERY | |
ANALYTIC_QUERY |
Definition at line 103 of file query_manager.h.
Enumerator | |
---|---|
TEMP_FILE_MEMBUF_NONE | |
TEMP_FILE_MEMBUF_NORMAL | |
TEMP_FILE_MEMBUF_KEY_BUFFER | |
TEMP_FILE_MEMBUF_NUM_TYPES |
Definition at line 52 of file query_manager.h.
enum QMGR_TRAN_STATUS |
Enumerator | |
---|---|
QMGR_TRAN_NULL | |
QMGR_TRAN_RUNNING | |
QMGR_TRAN_DELAYED_START | |
QMGR_TRAN_WAITING | |
QMGR_TRAN_RESUME_TO_DEALLOCATE | |
QMGR_TRAN_RESUME_DUE_DEADLOCK | |
QMGR_TRAN_TERMINATED |
Definition at line 61 of file query_manager.h.
void qmgr_add_modified_class | ( | THREAD_ENTRY * | thread_p, |
const OID * | class_oid | ||
) |
Definition at line 2280 of file query_manager.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), i, oid_block_list::last_oid_idx, LOG_FIND_THREAD_TRAN_INDEX, qmgr_tran_entry::modified_classes_p, oid_block_list::next, NULL, oid_block_list::oid_array, OID_BLOCK_ARRAY_SIZE, oid_compare(), and qmgr_query_table::tran_entries_p.
Referenced by locator_delete_force_internal(), locator_insert_force(), locator_update_force(), qexec_execute_delete(), qexec_execute_increment(), qexec_execute_insert(), and qexec_execute_update().
int qmgr_allocate_tran_entries | ( | THREAD_ENTRY * | thread_p, |
int | trans_cnt | ||
) |
Definition at line 629 of file query_manager.c.
References ARG_FILE_LINE, csect_enter, csect_exit, CSECT_QPROC_QUERY_TABLE, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), for(), i, INF_WAIT, MAX_NTRANS, NO_ERROR, NULL, qmgr_query_table::num_trans, qmgr_initialize_tran_entry(), and qmgr_query_table::tran_entries_p.
Referenced by logtb_expand_trantable(), and qmgr_initialize().
void qmgr_clear_trans_wakeup | ( | THREAD_ENTRY * | thread_p, |
int | tran_index, | ||
bool | tran_died, | ||
bool | is_abort | ||
) |
Definition at line 2122 of file query_manager.c.
References ARG_FILE_LINE, assert, er_log_debug, qmgr_query_entry::is_holdable, qmgr_query_entry::list_ent, qmgr_query_entry::list_id, LOG_FIND_THREAD_TRAN_INDEX, LOG_SYSTEM_TRAN_INDEX, qmgr_tran_entry::modified_classes_p, qmgr_query_entry::next, NULL, qmgr_query_table::num_trans, qfile_close_list(), qfile_end_use_of_list_cache_entry(), QFILE_FREE_AND_INIT_LIST_ID, qfile_has_no_cache_entries(), QFILE_IS_LIST_CACHE_DISABLED, qmgr_clear_relative_cache_entries(), qmgr_free_oid_block(), qmgr_free_query_entry(), qmgr_free_query_temp_file_helper(), QMGR_TRAN_TERMINATED, QUERY_COMPLETED, qmgr_tran_entry::query_entry_list_p, qmgr_query_entry::query_id, qmgr_query_entry::query_status, SERVER_MODE, qmgr_query_entry::temp_vfid, qmgr_query_table::tran_entries_p, qmgr_tran_entry::trans_stat, qmgr_query_entry::xasl_ent, qmgr_query_entry::xasl_id, XASL_ID_SET_NULL, xsession_clear_query_entry_info(), and xsession_store_query_entry_info().
Referenced by log_abort_local(), log_commit_local(), and logtb_release_tran_index().
QMGR_TEMP_FILE* qmgr_create_new_temp_file | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id, | ||
QMGR_TEMP_FILE_MEMBUF_TYPE | membuf_type | ||
) |
Definition at line 2623 of file query_manager.c.
References ARG_FILE_LINE, assert, DB_ALIGN, DB_PAGESIZE, ER_ERROR_SEVERITY, ER_QPROC_UNKNOWN_QUERYID, er_set(), FILE_TEMP, free_and_init, i, qmgr_query_entry::includes_tde_class, LOG_FIND_THREAD_TRAN_INDEX, MAX_ALIGNMENT, qmgr_temp_file::membuf, qmgr_temp_file::membuf_last, qmgr_temp_file::membuf_npages, qmgr_temp_file::membuf_type, qmgr_temp_file::next, NULL, NULL_PAGEID, NULL_VOLID, qmgr_query_entry::num_tmp, qmgr_temp_file::preserved, qmgr_temp_file::prev, prm_get_integer_value(), PRM_ID_INDEX_SCAN_KEY_BUFFER_PAGES, PRM_ID_TEMP_MEM_BUFFER_PAGES, qmgr_allocate_tempfile_with_buffer(), qmgr_find_query_entry(), qmgr_get_temp_file_from_list(), QMGR_IS_VALID_MEMBUF_TYPE, qmgr_put_page_header(), qmgr_tran_entry::query_entry_list_p, qmgr_temp_file::tde_encrypted, qmgr_query_table::temp_file_list, TEMP_FILE_MEMBUF_NORMAL, qmgr_temp_file::temp_file_type, qmgr_temp_file::temp_vfid, qmgr_query_entry::temp_vfid, qmgr_query_table::tran_entries_p, and VFID_SET_NULL.
Referenced by qexec_setup_list_id(), qfile_get_first_page(), and qfile_open_list().
QMGR_TEMP_FILE* qmgr_create_result_file | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id | ||
) |
Definition at line 2731 of file query_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, ER_QPROC_UNKNOWN_QUERYID, er_set(), file_apply_tde_algorithm(), file_create_query_area(), FILE_QUERY_AREA, file_temp_preserve(), file_temp_retire(), free_and_init, qmgr_query_entry::includes_tde_class, LOG_FIND_THREAD_TRAN_INDEX, qmgr_temp_file::membuf, qmgr_temp_file::membuf_last, qmgr_temp_file::membuf_npages, qmgr_temp_file::membuf_type, qmgr_temp_file::next, NO_ERROR, NULL, qmgr_query_entry::num_tmp, qmgr_temp_file::preserved, qmgr_temp_file::prev, prm_get_integer_value(), PRM_ID_TDE_DEFAULT_ALGORITHM, PRM_ID_TEMP_MEM_BUFFER_PAGES, qmgr_find_query_entry(), qmgr_is_allowed_result_cache(), qmgr_tran_entry::query_entry_list_p, qmgr_query_entry::query_flag, TDE_ALGORITHM_NONE, qmgr_temp_file::tde_encrypted, TEMP_FILE_MEMBUF_NONE, qmgr_temp_file::temp_file_type, qmgr_temp_file::temp_vfid, qmgr_query_entry::temp_vfid, qmgr_query_table::tran_entries_p, and VFID_SET_NULL.
Referenced by qfile_open_list().
void qmgr_dump | ( | void | ) |
void qmgr_finalize | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 911 of file query_manager.c.
References assert, csect_enter, csect_exit, CSECT_QPROC_QUERY_TABLE, i, INF_WAIT, NO_ERROR, NULL, qmgr_query_table::num_trans, qfile_finalize(), qmgr_finalize_temp_file_list(), qmgr_free_tran_entries(), QMGR_NUM_TEMP_FILE_LISTS, scan_finalize(), qmgr_query_table::temp_file_list, and qmgr_query_table::tran_entries_p.
Referenced by boot_server_all_finalize().
int qmgr_free_list_temp_file | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id, | ||
QMGR_TEMP_FILE * | tfile_vfidp | ||
) |
Definition at line 2969 of file query_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_FAILED, qmgr_query_entry::er_msg, er_msg(), ER_QPROC_UNKNOWN_QUERYID, er_set(), er_set_area_error(), qmgr_query_entry::errid, FILE_QUERY_AREA, file_temp_retire(), file_temp_retire_preserved(), free_and_init, LOG_FIND_THREAD_TRAN_INDEX, logtb_get_check_interrupt(), logtb_is_interrupted_tran(), qmgr_temp_file::next, NO_ERROR, NULL, OR_INT_SIZE, or_pack_int(), p, qmgr_temp_file::preserved, qmgr_temp_file::prev, qmgr_find_query_entry(), qmgr_put_temp_file_into_list(), qmgr_tran_entry::query_entry_list_p, rc, rv, strlen, qmgr_temp_file::temp_file_type, qmgr_temp_file::temp_vfid, qmgr_query_entry::temp_vfid, qmgr_query_table::tran_entries_p, VFID_ISNULL, and VFID_SET_NULL.
Referenced by qfile_destroy_list().
void qmgr_free_old_page | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_ptr, | ||
QMGR_TEMP_FILE * | tfile_vfidp | ||
) |
Definition at line 2411 of file query_manager.c.
References assert, NULL, pgbuf_unfix, qmgr_get_page_type(), QMGR_MEMBUF_PAGE, QMGR_TEMP_FILE_PAGE, and QMGR_UNKNOWN_PAGE.
int qmgr_free_temp_file_list | ( | THREAD_ENTRY * | thread_p, |
QMGR_TEMP_FILE * | tfile_vfidp, | ||
QUERY_ID | query_id, | ||
bool | is_error | ||
) |
Definition at line 2843 of file query_manager.c.
References assert, ASSERT_ERROR, ER_FAILED, FILE_QUERY_AREA, file_temp_retire(), file_temp_retire_preserved(), free_and_init, qmgr_temp_file::next, NO_ERROR, NULL, qmgr_temp_file::preserved, qmgr_temp_file::prev, qmgr_put_temp_file_into_list(), rc, qmgr_temp_file::temp_file_type, qmgr_temp_file::temp_vfid, and VFID_ISNULL.
Referenced by qmgr_free_query_temp_file_helper(), and session_free_sentry_data().
QUERY_ID qmgr_get_current_query_id | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 3503 of file query_manager.c.
References LOG_FIND_THREAD_TRAN_INDEX, NULL, qmgr_tran_entry::query_entry_list_p, qmgr_query_entry::query_id, and qmgr_query_table::tran_entries_p.
Referenced by pgbuf_bcb_flush_with_wal(), pgbuf_claim_bcb_for_fix(), and pgbuf_flush_page_and_neighbors_fb().
PAGE_PTR qmgr_get_new_page | ( | THREAD_ENTRY * | thread_p, |
VPID * | vpidp, | ||
QMGR_TEMP_FILE * | tfile_vfidp | ||
) |
Definition at line 2491 of file query_manager.c.
References ARG_FILE_LINE, ASSERT_ERROR, er_errid(), ER_ERROR_SEVERITY, ER_FILE_NOT_ENOUGH_PAGES_IN_VOLUME, ER_QPROC_INVALID_TEMP_FILE, ER_QPROC_OUT_OF_TEMP_SPACE, er_set(), file_apply_tde_algorithm(), file_create_temp(), FILE_TEMP, file_temp_retire(), LOG_FIND_THREAD_TRAN_INDEX, qmgr_temp_file::membuf, qmgr_temp_file::membuf_last, qmgr_temp_file::membuf_npages, NO_ERROR, NULL, NULL_PAGEID, NULL_VOLID, vpid::pageid, prm_get_integer_value(), PRM_ID_TDE_DEFAULT_ALGORITHM, qmgr_get_external_file_page(), TDE_ALGORITHM_NONE, qmgr_temp_file::tde_encrypted, qmgr_temp_file::temp_file_type, qmgr_temp_file::temp_vfid, VFID_ISNULL, VFID_SET_NULL, and vpid::volid.
Referenced by qfile_allocate_new_ovf_page(), qfile_allocate_new_page(), qfile_copy_list_pages(), and qfile_get_first_page().
PAGE_PTR qmgr_get_old_page | ( | THREAD_ENTRY * | thread_p, |
VPID * | vpidp, | ||
QMGR_TEMP_FILE * | tfile_vfidp | ||
) |
Definition at line 2351 of file query_manager.c.
References ARG_FILE_LINE, ER_ERROR_SEVERITY, ER_INTERRUPTED, ER_QPROC_INVALID_TEMP_FILE, er_set(), LOG_FIND_THREAD_TRAN_INDEX, logtb_get_check_interrupt(), logtb_is_interrupted_tran(), qmgr_temp_file::membuf, qmgr_temp_file::membuf_last, NULL, NULL_VOLID, OLD_PAGE, PAGE_QRESULT, vpid::pageid, pgbuf_check_page_ptype(), pgbuf_fix, PGBUF_LATCH_WRITE, PGBUF_UNCONDITIONAL_LATCH, and vpid::volid.
Referenced by qexec_analytic_put_next(), qexec_gby_put_next(), qexec_hash_gby_put_next(), qexec_ordby_put_next(), qfile_add_overflow_tuple_to_list(), qfile_copy_list_pages(), qfile_get_tuple(), qfile_jump_scan_tuple_position(), qfile_overwrite_tuple(), qfile_put_next_sort_item(), qfile_scan_next(), qfile_scan_prev(), qfile_set_tuple_column_value(), qfile_start_scan_fix(), sqmgr_execute_query(), sqmgr_prepare_and_execute_query(), and xqfile_get_list_file_page().
QMGR_QUERY_ENTRY* qmgr_get_query_entry | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id, | ||
int | trans_ind | ||
) |
Definition at line 498 of file query_manager.c.
References LOG_FIND_THREAD_TRAN_INDEX, NO_ERROR, NULL, NULL_TRAN_INDEX, qmgr_add_query_entry(), qmgr_allocate_query_entry(), qmgr_find_query_entry(), qmgr_free_query_entry(), qmgr_tran_entry::query_entry_list_p, qmgr_query_entry::query_id, qmgr_query_table::tran_entries_p, and xsession_load_query_entry_info().
Referenced by qmgr_get_query_sql_user_text(), qmgr_set_query_error(), and xqfile_get_list_file_page().
char* qmgr_get_query_sql_user_text | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id, | ||
int | tran_index | ||
) |
Definition at line 3528 of file query_manager.c.
References NULL, qmgr_get_query_entry(), xasl_cache_ent::sql_info, execution_info::sql_user_text, and qmgr_query_entry::xasl_ent.
Referenced by qexec_execute_query().
struct drand48_data* qmgr_get_rand_buf | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 3488 of file query_manager.c.
References qmgr_rand_buf.
Referenced by fetch_peek_arith(), and qexec_execute_query().
int qmgr_get_sql_id | ( | THREAD_ENTRY * | thread_p, |
char ** | sql_id_buf, | ||
char * | query, | ||
size_t | sql_len | ||
) |
Definition at line 3450 of file query_manager.c.
References ARG_FILE_LINE, assert_release, crypt_md5_buffer_hex(), ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), NO_ERROR, NULL, and QMGR_SQL_ID_LENGTH.
Referenced by er_log_slow_query(), sqmgr_execute_query(), xcache_dump(), and xlogtb_get_pack_tran_table().
int qmgr_get_temp_file_membuf_pages | ( | QMGR_TEMP_FILE * | temp_file_p | ) |
Definition at line 3350 of file query_manager.c.
References assert, LOG_FIND_TDES(), log_get_clock_msec(), qmgr_temp_file::membuf_npages, NULL, log_tdes::query_start_time, query_timeout, log_tdes::query_timeout, log_tdes::tran_start_time, log_tdes::xasl_id, XASL_ID_COPY, and XASL_ID_SET_NULL.
Referenced by scan_init_indx_coverage().
int qmgr_initialize | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 850 of file query_manager.c.
References csect_enter, csect_exit, CSECT_QPROC_QUERY_TABLE, ER_FAILED, INF_WAIT, qmgr_temp_file_list::list, logtb_get_number_of_total_tran_indices(), NO_ERROR, NULL, qfile_initialize(), qmgr_allocate_tran_entries(), qmgr_finalize_temp_file_list(), qmgr_initialize_temp_file_list(), qmgr_rand_buf, scan_initialize(), qmgr_query_table::temp_file_list, TEMP_FILE_MEMBUF_KEY_BUFFER, TEMP_FILE_MEMBUF_NORMAL, and qmgr_query_table::tran_entries_p.
Referenced by boot_create_all_volumes(), and boot_restart_server().
void qmgr_set_dirty_page | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_ptr, | ||
int | free_page, | ||
LOG_DATA_ADDR * | addrp, | ||
QMGR_TEMP_FILE * | tfile_vfidp | ||
) |
Definition at line 2455 of file query_manager.c.
References assert, FREE, log_skip_logging(), pgbuf_set_dirty(), qmgr_get_page_type(), QMGR_MEMBUF_PAGE, QMGR_TEMP_FILE_PAGE, and QMGR_UNKNOWN_PAGE.
Referenced by qfile_set_dirty_page().
void qmgr_set_query_error | ( | THREAD_ENTRY * | thread_p, |
QUERY_ID | query_id | ||
) |
Definition at line 3122 of file query_manager.c.
References assert, BUILDLIST_PROC, er_errid(), qmgr_query_entry::er_msg, er_msg(), qmgr_query_entry::errid, union_proc_node::left, NO_ERROR, NULL, NULL_TRAN_INDEX, xasl_node::proc, qmgr_get_query_entry(), strdup(), xasl_node::type, and xasl_node::union_.
Referenced by qexec_execute_build_columns(), qexec_execute_build_indexes(), qexec_execute_mainblock_internal(), and qexec_execute_query().
void qmgr_setup_empty_list_file | ( | char * | page_buf | ) |
Definition at line 3184 of file query_manager.c.
References qfile_page_header::lasttpl_off, qfile_page_header::next_pgid, qfile_page_header::next_volid, NULL_PAGEID, NULL_VOLID, qfile_page_header::ovfl_pgid, qfile_page_header::ovfl_volid, qfile_page_header::pg_tplcnt, qfile_page_header::prev_pgid, qfile_page_header::prev_volid, QFILE_PAGE_HEADER_SIZE, and qmgr_put_page_header().
Referenced by sqfile_get_list_file_page().