CUBRID Engine  latest
list_file.h File Reference
#include "dbtype_def.h"
#include "external_sort.h"
#include "query_list.h"
#include "storage_common.h"
#include "thread_compat.hpp"
#include "xasl_cache.h"
#include <stdio.h>
Include dependency graph for list_file.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  qfile_page_header
 
struct  qfile_list_cache_entry
 

Macros

#define QFILE_IS_LIST_CACHE_DISABLED   (qfile_Is_list_cache_disabled)
 
#define QFILE_FREE_AND_INIT_LIST_ID(list_id)
 
#define QFILE_PAGE_HEADER_INITIALIZER   { 0, NULL_PAGEID, NULL_PAGEID, 0, NULL_PAGEID, NULL_VOLID, NULL_VOLID, NULL_VOLID }
 

Typedefs

typedef struct or_buf OR_BUF
 
typedef struct qfile_page_header QFILE_PAGE_HEADER
 
typedef struct qfile_list_cache_entry QFILE_LIST_CACHE_ENTRY
 

Enumerations

enum  { QFILE_LIST_QUERY_CACHE_MODE_OFF = 0, QFILE_LIST_QUERY_CACHE_MODE_SELECTIVELY_OFF = 1, QFILE_LIST_QUERY_CACHE_MODE_SELECTIVELY_ON = 2 }
 

Functions

int qfile_initialize (void)
 
void qfile_finalize (void)
 
void qfile_destroy_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id)
 
void qfile_close_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id)
 
int qfile_add_tuple_to_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, QFILE_TUPLE tpl)
 
int qfile_add_tuple_get_pos_in_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, QFILE_TUPLE tpl, QFILE_TUPLE_POSITION *tuple_pos)
 
int qfile_add_overflow_tuple_to_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, PAGE_PTR ovfl_tpl_pg, QFILE_LIST_ID *input_list_id)
 
int qfile_get_first_page (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id)
 
int qfile_copy_list_id (QFILE_LIST_ID *dest_list_id, const QFILE_LIST_ID *src_list_id, bool include_sort_list)
 
QFILE_LIST_IDqfile_clone_list_id (const QFILE_LIST_ID *list_id, bool include_sort_list)
 
void qfile_free_list_id (QFILE_LIST_ID *list_id)
 
void qfile_free_sort_list (THREAD_ENTRY *thread_p, SORT_LIST *sort_list)
 
SORT_LISTqfile_allocate_sort_list (THREAD_ENTRY *thread_p, int cnt)
 
bool qfile_is_sort_list_covered (SORT_LIST *covering_list, SORT_LIST *covered_list)
 
SORT_STATUS qfile_make_sort_key (THREAD_ENTRY *thread_p, SORTKEY_INFO *info, RECDES *key, QFILE_LIST_SCAN_ID *input_scan, QFILE_TUPLE_RECORD *tplrec)
 
QFILE_TUPLE qfile_generate_sort_tuple (SORTKEY_INFO *info, SORT_REC *sort_rec, RECDES *output_recdes)
 
int qfile_compare_partial_sort_record (const void *pk0, const void *pk1, void *arg)
 
int qfile_compare_all_sort_record (const void *pk0, const void *pk1, void *arg)
 
int qfile_get_estimated_pages_for_sorting (QFILE_LIST_ID *listid, SORTKEY_INFO *info)
 
SORTKEY_INFOqfile_initialize_sort_key_info (SORTKEY_INFO *info, SORT_LIST *list, QFILE_TUPLE_VALUE_TYPE_LIST *types)
 
void qfile_clear_sort_key_info (SORTKEY_INFO *info)
 
QFILE_LIST_IDqfile_sort_list_with_func (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, SORT_LIST *sort_list, QUERY_OPTIONS option, int ls_flag, SORT_GET_FUNC *get_fn, SORT_PUT_FUNC *put_fn, SORT_CMP_FUNC *cmp_fn, void *extra_arg, int limit, bool do_close)
 
QFILE_LIST_IDqfile_sort_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, SORT_LIST *sort_list, QUERY_OPTIONS option, bool do_close)
 
int qfile_initialize_list_cache (THREAD_ENTRY *thread_p)
 
int qfile_finalize_list_cache (THREAD_ENTRY *thread_p)
 
int qfile_clear_list_cache (THREAD_ENTRY *thread_p, int list_ht_no)
 
int qfile_dump_list_cache_internal (THREAD_ENTRY *thread_p, FILE *fp)
 
void qfile_clear_uncommited_list_cache_entry (THREAD_ENTRY *thread_p, int tran_index)
 
QFILE_LIST_CACHE_ENTRYqfile_lookup_list_cache_entry (THREAD_ENTRY *thread_p, int list_ht_no, const DB_VALUE_ARRAY *params, bool *result_cached)
 
QFILE_LIST_CACHE_ENTRYqfile_update_list_cache_entry (THREAD_ENTRY *thread_p, int list_ht_no, const DB_VALUE_ARRAY *params, const QFILE_LIST_ID *list_id, XASL_CACHE_ENTRY *xasl)
 
int qfile_end_use_of_list_cache_entry (THREAD_ENTRY *thread_p, QFILE_LIST_CACHE_ENTRY *lent, bool marker)
 
int qfile_modify_type_list (QFILE_TUPLE_VALUE_TYPE_LIST *type_list, QFILE_LIST_ID *list_id)
 
void qfile_clear_list_id (QFILE_LIST_ID *list_id)
 
void qfile_load_xasl_node_header (THREAD_ENTRY *thread_p, char *xasl_stream, xasl_node_header *xasl_header_p)
 
QFILE_LIST_IDqfile_open_list (THREAD_ENTRY *thread_p, QFILE_TUPLE_VALUE_TYPE_LIST *type_list, SORT_LIST *sort_list, QUERY_ID query_id, int flag)
 
int qfile_reopen_list_as_append_mode (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p)
 
int qfile_save_tuple (QFILE_TUPLE_DESCRIPTOR *tuple_descr_p, QFILE_TUPLE_TYPE tuple_type, char *page_p, int *tuple_length_p)
 
int qfile_generate_tuple_into_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, QFILE_TUPLE_TYPE tpl_type)
 
int qfile_fast_intint_tuple_to_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, int v1, int v2)
 
int qfile_fast_intval_tuple_to_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, int v1, DB_VALUE *v2)
 
int qfile_fast_val_tuple_to_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, DB_VALUE *val)
 
int qfile_add_item_to_list (THREAD_ENTRY *thread_p, char *item, int item_size, QFILE_LIST_ID *list_id)
 
QFILE_LIST_IDqfile_combine_two_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *lhs_file, QFILE_LIST_ID *rhs_file, int flag)
 
int qfile_copy_tuple_descr_to_tuple (THREAD_ENTRY *thread_p, QFILE_TUPLE_DESCRIPTOR *tpl_descr, QFILE_TUPLE_RECORD *tplrec)
 
int qfile_reallocate_tuple (QFILE_TUPLE_RECORD *tplrec, int tpl_size)
 
int qfile_unify_types (QFILE_LIST_ID *list_id1, const QFILE_LIST_ID *list_id2)
 
QFILE_LIST_IDqfile_duplicate_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, int flag)
 
int qfile_get_tuple (THREAD_ENTRY *thread_p, PAGE_PTR first_page, QFILE_TUPLE tuplep, QFILE_TUPLE_RECORD *tplrec, QFILE_LIST_ID *list_idp)
 
void qfile_save_current_scan_tuple_position (QFILE_LIST_SCAN_ID *s_id, QFILE_TUPLE_POSITION *ls_tplpos)
 
SCAN_CODE qfile_jump_scan_tuple_position (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id, QFILE_TUPLE_POSITION *ls_tplpos, QFILE_TUPLE_RECORD *tplrec, int peek)
 
int qfile_start_scan_fix (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id)
 
int qfile_open_list_scan (QFILE_LIST_ID *list_id, QFILE_LIST_SCAN_ID *s_id)
 
SCAN_CODE qfile_scan_list_next (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id, QFILE_TUPLE_RECORD *tplrec, int peek)
 
SCAN_CODE qfile_scan_list_prev (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id, QFILE_TUPLE_RECORD *tplrec, int peek)
 
void qfile_end_scan_fix (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id)
 
void qfile_close_scan (THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *s_id)
 
QFILE_TUPLE_VALUE_FLAG qfile_locate_tuple_value (QFILE_TUPLE tpl, int index, char **tpl_val, int *val_size)
 
QFILE_TUPLE_VALUE_FLAG qfile_locate_tuple_value_r (QFILE_TUPLE tpl, int index, char **tpl_val, int *val_size)
 
int qfile_locate_tuple_next_value (OR_BUF *iterator, OR_BUF *buf, QFILE_TUPLE_VALUE_FLAG *flag)
 
bool qfile_has_next_page (PAGE_PTR page_p)
 
int qfile_update_domains_on_type_list (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, valptr_list_node *valptr_list_p)
 
int qfile_set_tuple_column_value (THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, PAGE_PTR curr_page_p, VPID *vpid_p, QFILE_TUPLE tuple_p, int col_num, DB_VALUE *value_p, TP_DOMAIN *domain)
 
int qfile_overwrite_tuple (THREAD_ENTRY *thread_p, PAGE_PTR first_page, QFILE_TUPLE tuplep, QFILE_TUPLE_RECORD *tplrec, QFILE_LIST_ID *list_idp)
 
void qfile_update_qlist_count (THREAD_ENTRY *thread_p, const QFILE_LIST_ID *list_p, int inc)
 
int qfile_get_list_cache_number_of_entries (int ht_no)
 
bool qfile_has_no_cache_entries ()
 

Variables

int qfile_Is_list_cache_disabled
 

Macro Definition Documentation

#define QFILE_PAGE_HEADER_INITIALIZER   { 0, NULL_PAGEID, NULL_PAGEID, 0, NULL_PAGEID, NULL_VOLID, NULL_VOLID, NULL_VOLID }

Definition at line 77 of file list_file.h.

Referenced by qmgr_init_external_file_page().

Typedef Documentation

typedef struct or_buf OR_BUF

Definition at line 48 of file list_file.h.

Definition at line 81 of file list_file.h.

Definition at line 65 of file list_file.h.

Enumeration Type Documentation

anonymous enum
Enumerator
QFILE_LIST_QUERY_CACHE_MODE_OFF 
QFILE_LIST_QUERY_CACHE_MODE_SELECTIVELY_OFF 
QFILE_LIST_QUERY_CACHE_MODE_SELECTIVELY_ON 

Definition at line 103 of file list_file.h.

Function Documentation

SORT_LIST* qfile_allocate_sort_list ( THREAD_ENTRY thread_p,
int  cnt 
)
void qfile_clear_sort_key_info ( SORTKEY_INFO info)
void qfile_clear_uncommited_list_cache_entry ( THREAD_ENTRY thread_p,
int  tran_index 
)
QFILE_LIST_ID* qfile_clone_list_id ( const QFILE_LIST_ID list_id,
bool  include_sort_list 
)

Definition at line 501 of file list_file.c.

References DB_SIZEOF, free_and_init, NO_ERROR, and qfile_copy_list_id().

Referenced by qfile_union_list(), qmgr_process_query(), and xqmgr_execute_query().

Here is the caller graph for this function:

int qfile_compare_all_sort_record ( const void *  pk0,
const void *  pk1,
void *  arg 
)
void qfile_end_scan_fix ( THREAD_ENTRY thread_p,
QFILE_LIST_SCAN_ID s_id 
)
void qfile_finalize ( void  )

Definition at line 1117 of file list_file.c.

References lf_freelist_destroy().

Referenced by qmgr_finalize().

Here is the caller graph for this function:

void qfile_free_sort_list ( THREAD_ENTRY thread_p,
SORT_LIST sort_list 
)
int qfile_get_estimated_pages_for_sorting ( QFILE_LIST_ID listid,
SORTKEY_INFO info 
)
int qfile_get_list_cache_number_of_entries ( int  ht_no)

Definition at line 6486 of file list_file.c.

References assert_release, qfile_list_cache::list_hts, and mht_table::nentries.

Referenced by qfile_clear_list_cache(), and xcache_invalidate_qcaches().

Here is the caller graph for this function:

bool qfile_has_next_page ( PAGE_PTR  page_p)

Definition at line 6066 of file list_file.c.

References NULL_PAGEID, NULL_PAGEID_IN_PROGRESS, and QFILE_GET_NEXT_PAGE_ID.

Referenced by qfile_scan_next().

Here is the caller graph for this function:

bool qfile_has_no_cache_entries ( )

Definition at line 6494 of file list_file.c.

References qfile_list_cache::n_entries.

Referenced by qmgr_clear_trans_wakeup(), and xcache_invalidate_entries().

Here is the caller graph for this function:

bool qfile_is_sort_list_covered ( SORT_LIST covering_list,
SORT_LIST covered_list 
)
void qfile_load_xasl_node_header ( THREAD_ENTRY thread_p,
char *  xasl_stream,
xasl_node_header xasl_header_p 
)

Definition at line 1063 of file list_file.c.

References assert, INIT_XASL_NODE_HEADER, NO_ERROR, NULL, and stx_map_stream_to_xasl_node_header().

Referenced by xqmgr_prepare_query(), and xsession_get_prepared_statement().

Here is the caller graph for this function:

QFILE_TUPLE_VALUE_FLAG qfile_locate_tuple_value_r ( QFILE_TUPLE  tpl,
int  index,
char **  tpl_val,
int *  val_size 
)

Definition at line 922 of file list_file.c.

References i, QFILE_GET_TUPLE_VALUE_FLAG, QFILE_GET_TUPLE_VALUE_LENGTH, QFILE_TUPLE_VALUE_HEADER_SIZE, V_BOUND, and V_UNBOUND.

Referenced by fetch_peek_dbval_pos(), and qfile_locate_tuple_value().

Here is the caller graph for this function:

QFILE_LIST_ID* qfile_open_list ( THREAD_ENTRY thread_p,
QFILE_TUPLE_VALUE_TYPE_LIST type_list,
SORT_LIST sort_list,
QUERY_ID  query_id,
int  flag 
)

Definition at line 1142 of file list_file.c.

References DB_SIZEOF, qfile_tuple_value_position::dom, qfile_tuple_value_type_list::domp, free_and_init, i, sort_list::next, NULL, qfile_list_id::page_cnt, sort_list::pos_descr, qfile_tuple_value_position::pos_no, qfile_allocate_sort_list(), QFILE_CLEAR_LIST_ID, QFILE_FLAG_DISTINCT, QFILE_FLAG_RESULT_FILE, QFILE_FLAG_USE_KEY_BUFFER, qfile_get_sort_list_size(), QFILE_IS_FLAG_SET, QFILE_IS_LIST_CACHE_DISABLED, qfile_update_qlist_count(), qmgr_create_new_temp_file(), qmgr_create_result_file(), qfile_list_id::query_id, S_ASC, sort_list::s_nulls, S_NULLS_FIRST, sort_list::s_order, qfile_list_id::sort_list, TEMP_FILE_MEMBUF_KEY_BUFFER, TEMP_FILE_MEMBUF_NORMAL, qmgr_temp_file::temp_vfid, qfile_list_id::temp_vfid, qfile_list_id::tfile_vfid, qfile_list_id::tuple_cnt, qfile_tuple_value_type_list::type_cnt, qfile_list_id::type_list, and VFID_COPY.

Referenced by qdata_initialize_analytic_func(), qdata_process_distinct_or_sort(), qexec_alloc_agg_hash_context(), qexec_end_buildvalueblock_iterations(), qexec_execute_analytic(), qexec_execute_connect_by(), qexec_groupby(), qexec_groupby_index(), qexec_initialize_analytic_function_state(), qexec_merge_list(), qexec_merge_list_outer(), qexec_start_connect_by_lists(), qexec_start_mainblock_iterations(), qfile_combine_two_list(), qfile_duplicate_list(), qfile_sort_list_with_func(), scan_init_indx_coverage(), scan_next_index_scan(), and scan_reset_scan_block().

Here is the caller graph for this function:

int qfile_save_tuple ( QFILE_TUPLE_DESCRIPTOR tuple_descr_p,
QFILE_TUPLE_TYPE  tuple_type,
char *  page_p,
int *  tuple_length_p 
)
SCAN_CODE qfile_scan_list_prev ( THREAD_ENTRY thread_p,
QFILE_LIST_SCAN_ID s_id,
QFILE_TUPLE_RECORD tplrec,
int  peek 
)

Definition at line 4738 of file list_file.c.

References qfile_scan_list(), and qfile_scan_prev().

Referenced by qexec_analytic_value_advance(), and scan_prev_scan_local().

Here is the caller graph for this function:

QFILE_LIST_ID* qfile_sort_list ( THREAD_ENTRY thread_p,
QFILE_LIST_ID list_id,
SORT_LIST sort_list,
QUERY_OPTIONS  option,
bool  do_close 
)
QFILE_LIST_CACHE_ENTRY* qfile_update_list_cache_entry ( THREAD_ENTRY thread_p,
int  list_ht_no,
const DB_VALUE_ARRAY params,
const QFILE_LIST_ID list_id,
XASL_CACHE_ENTRY xasl 
)
void qfile_update_qlist_count ( THREAD_ENTRY thread_p,
const QFILE_LIST_ID list_p,
int  inc 
)

Variable Documentation

int qfile_Is_list_cache_disabled

Definition at line 193 of file list_file.c.

Referenced by qfile_initialize().