44 #if defined(ENABLE_SYSTEMTAP) 51 #if !defined (SERVER_MODE) 53 #define pthread_mutex_init(a, b) 54 #define pthread_mutex_destroy(a) 55 #define pthread_mutex_lock(a) 0 56 #define pthread_mutex_unlock(a) 58 #define IS_IN_METHOD_OR_JSP_CALL() (method_Num_method_jsp_calls > 0) 62 #define QMGR_MAX_QUERY_ENTRY_PER_TRAN 100 64 #define QMGR_TEMP_FILE_FREE_LIST_SIZE 100 66 #define QMGR_NUM_TEMP_FILE_LISTS (TEMP_FILE_MEMBUF_NUM_TYPES) 68 #define QMGR_SQL_ID_LENGTH 13 71 #define QMGR_IS_VALID_MEMBUF_TYPE(m) ((m) == TEMP_FILE_MEMBUF_NORMAL || (m) == TEMP_FILE_MEMBUF_KEY_BUFFER) 88 #define OID_BLOCK_ARRAY_SIZE 10 136 {{PTHREAD_MUTEX_INITIALIZER,
NULL, 0}, {PTHREAD_MUTEX_INITIALIZER,
NULL, 0}}
139 #if !defined(SERVER_MODE) 168 #if defined (SERVER_MODE) 171 int xasl_stream_size,
int dbval_count,
const DB_VALUE * dbvals_p,
173 static void qmgr_reset_query_exec_info (
int tran_index);
199 && page_p <= temp_file_p->membuf[temp_file_p->
membuf_last])
207 if (begin_page <= page_p && page_p <= end_page)
272 QUERY_ID hint_query_id;
284 else if (QMGR_MAX_QUERY_ENTRY_PER_TRAN < tran_entry_p->num_query_entries)
325 assert (hint_query_id != 0);
370 #if defined (SERVER_MODE) 403 oid_block = oid_block->
next;
424 query_p = query_p->
next;
426 #if defined (SERVER_MODE) 479 query_p = query_list_p;
480 while (query_p && query_p->
query_id != query_id)
482 query_p = query_p->
next;
580 while (query_p && query_p->
query_id != query_id)
582 prev_query_p = query_p;
583 query_p = query_p->
next;
591 if (prev_query_p ==
NULL)
603 prev_query_p->next = query_p->
next;
632 int i, num_current_entries;
633 size_t tran_entry_size;
635 #if defined (SERVER_MODE) 636 num_new_entries = MAX (num_new_entries,
MAX_NTRANS);
645 num_current_entries = qmgr_Query_table.
num_trans;
647 if (num_new_entries <= num_current_entries)
674 for (i = qmgr_Query_table.
num_trans; i < num_new_entries; i++, tran_entry_p++)
679 qmgr_Query_table.
num_trans = num_new_entries;
704 for (i = 0; i < qmgr_Query_table.
num_trans; i++)
717 #if defined (CUBRID_DEBUG) 724 return "QMGR_TRAN_NULL";
726 return "QMGR_TRAN_NULL";
728 return "QMGR_TRAN_DELAYED_START";
730 return "QMGR_TRAN_WAITING";
732 return "QMGR_TRAN_RESUME_TO_DEALLOCATE";
734 return "QMGR_TRAN_RESUME_DUE_DEADLOCK";
736 return "QMGR_TRAN_TERMINATED";
738 return "QMGR_UNKNOWN";
749 fprintf (stdout,
"\t\tQuery Entry Structures:\n");
750 fprintf (stdout,
"\t\tquery_id: %lld\n", (
long long) query_p->
query_id);
751 fprintf (stdout,
"\t\txasl_id: {{%08x | %08x | %08x | %08x | %08x}, {%d sec %d usec}}\n",
753 fprintf (stdout,
"\t\tlist_id: %p\n", (
void *) query_p->
list_id);
759 "\t\t{type_list: {%d, %p}, tuple_cnt: %d, page_cnt: %d,\n" 760 "\t first_vpid: {%d, %d}, last_vpid: {%d, %d},\n" 761 "\t last_pgptr: %p, last_offset: %d, lasttpl_len: %d}\n", list_id_p->
type_list.
type_cnt,
773 fprintf (stdout,
"\t\tfile_vfid: %p\n", (
void *) &temp_vfid_p);
775 temp_vfid_p = temp_vfid_p->
next;
777 while (temp_vfid_p != query_p->
temp_vfid);
780 fprintf (stdout,
"\t\tnext: %p\n\n", (
void *) query_p->
next);
794 int waiting_count, running_count;
798 waiting_count = running_count = 0;
801 for (i = 0; i < qmgr_Query_table.
num_trans; i++)
815 fprintf (stdout,
"\n\tQUERY MANAGER TRANSACTION STRUCTURES: \n");
816 fprintf (stdout,
"\t===================================== \n");
817 fprintf (stdout,
"\tTrans_cnt: %d\n", qmgr_Query_table.
num_trans);
818 fprintf (stdout,
"\tWait_trans_cnt: %d\n", waiting_count);
819 fprintf (stdout,
"\tRun_trans_cnt: %d\n", running_count);
820 fprintf (stdout,
"\n\tTransaction index array: \n");
821 fprintf (stdout,
"\t------------------------ \n");
824 for (i = 0; i < qmgr_Query_table.
num_trans; i++)
826 fprintf (stdout,
"\tTrans_ind: %d\n", i);
827 fprintf (stdout,
"\tTrans_stat: %s\n", qmgr_get_tran_status_string (tran_entry_p->
trans_stat));
829 fprintf (stdout,
"\tTrans_query_entries:\n");
833 qmgr_dump_query_entry (query_p);
836 fprintf (stdout,
"\t------------------------ \n");
852 int total_tran_indices;
853 #if !defined(SERVER_MODE) 889 #if defined (SERVER_MODE) 890 numeric_init_power_value_string ();
893 srand48 ((
long) time (
NULL));
895 #if !defined(SERVER_MODE) 896 gettimeofday (&t,
NULL);
954 OID creator_oid, *class_oid_list_p =
NULL;
955 int n_oid_list, *tcard_list_p =
NULL;
956 int *class_locks =
NULL;
978 &recompile_due_to_threshold);
984 if (cache_entry_p !=
NULL)
1033 tcard_list_p = (
int *)
db_private_alloc (thread_p,
sizeof (
int) * n_oid_list);
1034 if (class_oid_list_p ==
NULL || class_locks ==
NULL || tcard_list_p ==
NULL)
1040 for (i = 0; i < n_oid_list; i++)
1044 for (i = 0; i < n_oid_list; i++)
1048 for (i = 0; i < n_oid_list; i++)
1055 class_oid_list_p =
NULL;
1057 tcard_list_p =
NULL;
1061 xcache_insert (thread_p, context, stream, n_oid_list, class_oid_list_p, class_locks, tcard_list_p, &cache_entry_p);
1067 if (cache_entry_p ==
NULL)
1079 if (class_oid_list_p)
1134 xasl_buf_info =
NULL;
1137 if (xasl_tree !=
NULL)
1166 #if !defined(NDEBUG) 1178 thread_p->no_logging =
false;
1182 if (query_p->
errid < 0)
1197 if (list_id ==
NULL)
1251 #if defined (SERVER_MODE) 1253 HL_HEAPID old_pri_heap_id;
1259 int tran_index = -1;
1263 bool saved_is_stats_on;
1265 bool is_xasl_pinned_reference;
1266 bool do_not_cache =
false;
1268 cached_result =
false;
1272 xasl_cache_entry_p =
NULL;
1273 list_cache_entry_p =
NULL;
1276 #if defined (SERVER_MODE) 1277 data = (
char *) dbval_p;
1278 old_pri_heap_id = 0;
1281 #if defined (SERVER_MODE) 1283 #elif defined (SA_MODE) 1289 saved_is_stats_on = perfmon_server_is_stats_on (thread_p);
1297 if (saved_is_stats_on ==
true)
1299 perfmon_stop_watch (thread_p);
1302 else if (xasl_trace ==
true)
1305 perfmon_start_watch (thread_p);
1317 xasl_cache_entry_p =
NULL;
1323 if (xasl_cache_entry_p ==
NULL)
1338 if (ret_cache_entry_p)
1340 *ret_cache_entry_p = xasl_cache_entry_p;
1348 #if defined (SERVER_MODE) 1356 if (dbvals_p ==
NULL)
1363 for (i = 0, dbval = dbvals_p; i < dbval_count; i++, dbval++)
1377 params.
size = dbval_count;
1378 params.
vals = dbvals_p;
1389 do_not_cache =
true;
1392 if (do_not_cache ==
false)
1395 list_cache_entry_p =
1406 if (client_cache_time_p)
1415 #if defined(ENABLE_SYSTEMTAP) 1418 CUBRID_TRAN_START (tran_index);
1422 #if defined (SERVER_MODE) 1429 qmgr_set_query_exec_info_to_tdes (tran_index, query_timeout, xasl_id_p);
1435 if (query_p ==
NULL)
1443 query_p->
xasl_ent = xasl_cache_entry_p;
1446 query_p->
list_ent = list_cache_entry_p;
1480 if (list_id_p ==
NULL)
1495 assert (cached_result ==
false);
1499 if (list_id_p ==
NULL)
1515 if (list_id_p ==
NULL)
1520 if (list_cache_entry_p && !cached_result)
1534 list_id_p = tmp_list_id_p;
1539 tmp_list_id_p = list_id_p;
1542 if (tmp_list_id_p ==
NULL)
1554 if (list_cache_entry_p && xasl_cache_entry_p->
list_ht_no < 0)
1559 list_cache_entry_p =
1561 xasl_cache_entry_p);
1563 if (list_cache_entry_p ==
NULL)
1569 "xqmgr_execute_query: ls_update_xasl failed " 1570 "xasl_id { sha1 { %08x | %08x | %08x | %08x | %08x } time_stored { %d sec %d usec } } " 1571 "params { %d %s ... }\n",
1573 params.
size, s ? s :
"(null)");
1583 query_p->
list_ent = list_cache_entry_p;
1592 if (ret_cache_entry_p !=
NULL && *ret_cache_entry_p !=
NULL)
1595 assert (*ret_cache_entry_p == xasl_cache_entry_p);
1597 else if (xasl_cache_entry_p !=
NULL)
1607 #if defined (SERVER_MODE) 1610 for (i = 0, dbval = dbvals_p; i < dbval_count; i++, dbval++)
1620 perfmon_start_watch (thread_p);
1623 #if defined (SERVER_MODE) 1624 qmgr_reset_query_exec_info (tran_index);
1658 if (xasl_trace ==
true && saved_is_stats_on ==
false)
1660 perfmon_stop_watch (thread_p);
1679 HL_HEAPID save_heap_id;
1692 if (num_bind_vals > 0)
1705 for (i = 0; i < num_bind_vals; i++)
1740 QUERY_ID * query_id_p,
int dbval_count,
void *dbval_p,
QUERY_FLAG * flag_p,
1743 #if defined (SERVER_MODE) 1745 HL_HEAPID old_pri_heap_id;
1754 bool saved_is_stats_on;
1764 #if defined (SERVER_MODE) 1765 data = (
char *) dbval_p;
1766 old_pri_heap_id = 0;
1769 saved_is_stats_on = perfmon_server_is_stats_on (thread_p);
1774 if (saved_is_stats_on ==
true)
1776 perfmon_stop_watch (thread_p);
1779 else if (xasl_trace ==
true)
1782 perfmon_start_watch (thread_p);
1804 #if defined(ENABLE_SYSTEMTAP) 1807 CUBRID_TRAN_START (tran_index);
1811 #if defined (SERVER_MODE) 1818 qmgr_set_query_exec_info_to_tdes (tran_index, query_timeout,
NULL);
1827 if (dbvals_p ==
NULL)
1834 for (i = 0, dbval = dbvals_p; i < dbval_count; i++, dbval++)
1846 if (query_p ==
NULL)
1868 list_id_p =
qmgr_process_query (thread_p,
NULL, xasl_stream, xasl_stream_size, dbval_count, dbvals_p, *flag_p,
1869 query_p, tran_entry_p);
1870 if (list_id_p ==
NULL)
1884 #if defined (SERVER_MODE) 1887 for (i = 0, dbval = dbvals_p; i < dbval_count; i++, dbval++)
1897 perfmon_start_watch (thread_p);
1900 #if defined (SERVER_MODE) 1901 qmgr_reset_query_exec_info (tran_index);
1931 if (xasl_trace ==
true && saved_is_stats_on ==
false)
1933 perfmon_stop_watch (thread_p);
1971 if (query_p ==
NULL)
2058 for (i = 0, class_oid_p = oid_block_p->
oid_array; i < oid_block_p->
last_oid_idx; i++, class_oid_p++)
2063 "qm_clear_trans_wakeup: qexec_clear_list_cache_by_class failed for class { %d %d %d }\n",
2128 if (tran_index >= qmgr_Query_table.
num_trans 2156 #if defined (SERVER_MODE) && !defined (NDEBUG) 2169 if (is_abort || is_tran_died)
2223 #if defined(ENABLE_UNUSED_FUNCTION) 2230 qmgr_get_tran_status (
THREAD_ENTRY * thread_p,
int tran_index)
2232 if (tran_index >= 0)
2249 if (tran_index >= 0)
2268 for (p = oid_block_p;
p; p = p->
next)
2307 oid_block_p = tmp_oid_block_p;
2316 tmp_oid_block_p = oid_block_p->
next;
2318 while (tmp_oid_block_p);
2328 oid_block_p = oid_block_p->
next;
2355 #if defined(SERVER_MODE) 2375 #if defined (SERVER_MODE) 2420 if (tfile_vfid_p ==
NULL)
2438 #if defined (SERVER_MODE) 2472 #if defined (SERVER_MODE) 2473 else if (free_page == (
int)
FREE)
2496 if (tfile_vfid_p ==
NULL)
2607 if (tempfile_p ==
NULL)
2612 memset (tempfile_p, 0x00, size);
2627 int tran_index,
i, num_buffer_pages;
2641 num_buffer_pages = ((membuf_type ==
TEMP_FILE_MEMBUF_NORMAL) ? temp_mem_buffer_pages : index_scan_key_buffer_pages);
2644 if (tfile_vfid_p ==
NULL)
2649 if (tfile_vfid_p ==
NULL)
2670 tfile_vfid_p->
membuf[
i] = page_p;
2688 if (query_p ==
NULL)
2706 tfile_vfid_p->
next = temp;
2708 tfile_vfid_p->
prev->
next = tfile_vfid_p;
2709 temp->
prev = tfile_vfid_p;
2715 tfile_vfid_p->
next = tfile_vfid_p;
2716 tfile_vfid_p->
prev = tfile_vfid_p;
2722 return tfile_vfid_p;
2742 if (tfile_vfid_p ==
NULL)
2781 if (query_p ==
NULL)
2815 tfile_vfid_p->
next = temp;
2817 tfile_vfid_p->
prev->
next = tfile_vfid_p;
2818 temp->
prev = tfile_vfid_p;
2823 tfile_vfid_p->
next = tfile_vfid_p;
2824 tfile_vfid_p->
prev = tfile_vfid_p;
2830 return tfile_vfid_p;
2851 while (tfile_vfid_p)
2878 temp = tfile_vfid_p;
2879 tfile_vfid_p = tfile_vfid_p->
next;
2911 bool is_error = (query_p->
errid < 0);
2987 if (query_p ==
NULL)
3031 else if (tfile_vfid_p)
3041 #if defined (SERVER_MODE) 3048 qmgr_is_query_interrupted (
THREAD_ENTRY * thread_p, QUERY_ID query_id)
3069 if (query_p ==
NULL)
3079 #if defined (ENABLE_UNUSED_FUNCTION) 3090 char *error_area, *
p;
3093 errid = query_p->
errid;
3094 er_msg = query_p->
er_msg;
3127 if (query_p !=
NULL)
3139 #if defined (SERVER_MODE) 3140 char *ptr = (
char *)
er_msg ();
3161 #if defined (SERVER_MODE) 3205 int i, num_buffer_pages;
3225 if (temp_file_p ==
NULL)
3231 temp_file_p->
next = temp_file_list_p->
list;
3234 temp_file_list_p->
list = temp_file_p;
3237 temp_file_list_p->
count =
i;
3253 if (temp_file_list_p ==
NULL)
3258 while (temp_file_list_p->
list)
3260 temp_file_p = temp_file_list_p->
list;
3261 temp_file_list_p->
list = temp_file_p->
next;
3264 temp_file_list_p->
count = 0;
3280 if (temp_file_list_p ==
NULL)
3288 if (temp_file_list_p->
list)
3290 temp_file_p = temp_file_list_p->
list;
3291 temp_file_list_p->
list = temp_file_p->
next;
3293 temp_file_list_p->
count--;
3313 if (temp_file_p ==
NULL)
3330 temp_file_p->
next = temp_file_list_p->
list;
3331 temp_file_list_p->
list = temp_file_p;
3332 temp_file_list_p->
count++;
3353 if (temp_file_p ==
NULL)
3360 #if defined (SERVER_MODE) 3407 if (xasl_id !=
NULL)
3420 qmgr_reset_query_exec_info (
int tran_index)
3452 char hashstring[32 + 1] = {
'\0' };
3455 if (sql_id_buf ==
NULL)
3462 if (ret_buf ==
NULL)
3479 *sql_id_buf = ret_buf;
3487 struct drand48_data *
3490 #if defined(SERVER_MODE) 3491 return &thread_p->rand_buf;
3506 QUERY_ID query_id = NULL_QUERY_ID;
3532 char *query_str =
NULL;
3535 if (query_ent_p !=
NULL)
3537 xasl_ent_p = query_ent_p->
xasl_ent;
3538 if (xasl_ent_p !=
NULL)
#define IS_TRIGGER_INVOLVED(flag)
int scan_initialize(void)
int stx_map_stream_to_xasl(THREAD_ENTRY *thread_p, xasl_node **xasl_tree, bool use_xasl_clone, char *xasl_stream, int xasl_stream_size, XASL_UNPACK_INFO **xasl_unpack_info_ptr)
#define QFILE_LAST_TUPLE_OFFSET
static void qmgr_add_query_entry(THREAD_ENTRY *thread_p, QMGR_QUERY_ENTRY *q_ptr, int trans_ind)
char * or_unpack_oid(char *ptr, OID *oid)
int xsession_remove_query_entry_info(THREAD_ENTRY *thread_p, const QUERY_ID query_id)
int file_temp_retire(THREAD_ENTRY *thread_p, const VFID *vfid)
QFILE_LIST_CACHE_ENTRY * list_ent
int xcache_find_sha1(THREAD_ENTRY *thread_p, const SHA1Hash *sha1, const XASL_CACHE_SEARCH_MODE search_mode, XASL_CACHE_ENTRY **xcache_entry, xasl_cache_rt_check_result *rt_check)
static void qmgr_free_tran_entries(void)
void xsession_store_query_entry_info(THREAD_ENTRY *thread_p, QMGR_QUERY_ENTRY *qentry_p)
#define QFILE_OVERFLOW_PAGE_ID_OFFSET
void qmgr_set_query_error(THREAD_ENTRY *thread_p, QUERY_ID query_id)
#define pthread_mutex_unlock(a)
XASL_NODE_HEADER * xasl_header
#define ER_FILE_NOT_ENOUGH_PAGES_IN_VOLUME
int qfile_end_use_of_list_cache_entry(THREAD_ENTRY *thread_p, QFILE_LIST_CACHE_ENTRY *lent, bool marker)
XCACHE_RELATED_OBJECT * related_objects
struct qmgr_temp_file * tfile_vfid
#define CACHE_TIME_RESET(T)
struct qmgr_tran_entry QMGR_TRAN_ENTRY
void qmgr_clear_trans_wakeup(THREAD_ENTRY *thread_p, int tran_index, bool is_tran_died, bool is_abort)
#define QFILE_PREV_PAGE_ID_OFFSET
static void qmgr_clear_relative_cache_entries(THREAD_ENTRY *thread_p, QMGR_TRAN_ENTRY *tran_entry_p)
QFILE_TUPLE_VALUE_TYPE_LIST type_list
static QMGR_QUERY_ENTRY * qmgr_find_query_entry(QMGR_QUERY_ENTRY *query_list_p, QUERY_ID query_id)
#define XASL_TO_BE_CACHED
void qmgr_free_old_page(THREAD_ENTRY *thread_p, PAGE_PTR page_p, QMGR_TEMP_FILE *tfile_vfid_p)
#define QFILE_FREE_AND_INIT_LIST_ID(list_id)
static OID_BLOCK_LIST * qmgr_allocate_oid_block(THREAD_ENTRY *thread_p)
struct oid_block_list OID_BLOCK_LIST
#define pthread_mutex_init(a, b)
QFILE_LIST_CACHE_ENTRY * qfile_lookup_list_cache_entry(THREAD_ENTRY *thread_p, int list_ht_no, const DB_VALUE_ARRAY *params, bool *result_cached)
int thread_get_recursion_depth(cubthread::entry *thread_p)
int logtb_get_number_of_total_tran_indices(void)
PAGE_PTR qmgr_get_old_page(THREAD_ENTRY *thread_p, VPID *vpid_p, QMGR_TEMP_FILE *tfile_vfid_p)
void qfile_load_xasl_node_header(THREAD_ENTRY *thread_p, char *xasl_stream, xasl_node_header *xasl_header_p)
const int LOG_SYSTEM_TRAN_INDEX
#define pthread_mutex_destroy(a)
#define csect_enter(a, b, c)
#define IS_XASL_TRACE_JSON(flag)
union xasl_node::@155 proc
#define pgbuf_unfix(thread_p, pgptr)
#define ER_QPROC_INVALID_XASLNODE
static void qmgr_mark_query_as_completed(QMGR_QUERY_ENTRY *query_p)
#define ASSERT_ERROR_AND_SET(error_code)
#define assert_release(e)
void pgbuf_set_dirty(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, bool free_page)
INT64 log_get_clock_msec(void)
static bool qmgr_is_related_class_modified(THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xasl_cache, int tran_index)
struct oid_block_list * next
int qmgr_allocate_tran_entries(THREAD_ENTRY *thread_p, int num_new_entries)
xasl_cache_rt_check_result
static QMGR_QUERY_ENTRY * qmgr_allocate_query_entry(THREAD_ENTRY *thread_p, QMGR_TRAN_ENTRY *tran_entry_p)
#define QFILE_PREV_VOL_ID_OFFSET
LOG_TDES * LOG_FIND_TDES(int tran_index)
OID oid_array[OID_BLOCK_ARRAY_SIZE]
static PAGE_PTR qmgr_get_external_file_page(THREAD_ENTRY *thread_p, VPID *vpid, QMGR_TEMP_FILE *vfid)
void qmgr_setup_empty_list_file(char *page_p)
void xcache_retire_clone(THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry, XASL_CLONE *xclone)
#define XASL_INCLUDES_TDE_CLASS
bool logtb_get_check_interrupt(THREAD_ENTRY *thread_p)
int xcache_insert(THREAD_ENTRY *thread_p, const compile_context *context, XASL_STREAM *stream, int n_oid, const OID *class_oids, const int *class_locks, const int *tcards, XASL_CACHE_ENTRY **xcache_entry)
#define er_log_debug(...)
HL_HEAPID db_change_private_heap(THREAD_ENTRY *thread_p, HL_HEAPID heap_id)
static void qmgr_put_temp_file_into_list(QMGR_TEMP_FILE *temp_file_p)
static QMGR_TEMP_FILE * qmgr_get_temp_file_from_list(QMGR_TEMP_FILE_LIST *temp_file_list_p)
#define DO_NOT_COLLECT_EXEC_STATS(flag)
#define ER_QM_QENTRY_RUNOUT
#define pthread_mutex_lock(a)
#define VFID_ISNULL(vfid_ptr)
static int qmgr_init_external_file_page(THREAD_ENTRY *thread_p, PAGE_PTR page, void *args)
#define SHA1_AS_ARGS(sha1)
QMGR_TEMP_FILE * qmgr_create_result_file(THREAD_ENTRY *thread_p, QUERY_ID query_id)
bool xcache_can_entry_cache_list(XASL_CACHE_ENTRY *xcache_entry)
bool session_is_queryid_idle(THREAD_ENTRY *thread_p, const QUERY_ID query_id, QUERY_ID *max_query_id_uses)
QFILE_LIST_ID * xqmgr_execute_query(THREAD_ENTRY *thread_p, const XASL_ID *xasl_id_p, QUERY_ID *query_id_p, int dbval_count, void *dbval_p, QUERY_FLAG *flag_p, CACHE_TIME *client_cache_time_p, CACHE_TIME *server_cache_time_p, int query_timeout, xasl_cache_ent **ret_cache_entry_p)
static struct drand48_data qmgr_rand_buf
int xsession_clear_query_entry_info(THREAD_ENTRY *thread_p, const QUERY_ID query_id)
int xcache_invalidate_qcaches(THREAD_ENTRY *thread_p, const OID *oid)
QMGR_QUERY_ENTRY * free_query_entry_list_p
PAGE_TYPE pgbuf_get_page_ptype(THREAD_ENTRY *thread_p, PAGE_PTR pgptr)
#define XASL_CLONE_INITIALIZER
#define QFILE_OVERFLOW_VOL_ID_OFFSET
int qmgr_get_temp_file_membuf_pages(QMGR_TEMP_FILE *temp_file_p)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
void thread_set_trace_format(cubthread::entry *thread_p, int format)
#define XASL_SET_FLAG(x, f)
#define QFILE_NEXT_PAGE_ID_OFFSET
#define XASL_ID_COPY(X1, X2)
void log_skip_logging(THREAD_ENTRY *thread_p, LOG_DATA_ADDR *addr)
static void qmgr_deallocate_query_entries(QMGR_QUERY_ENTRY *q_ptr)
bool pgbuf_check_page_ptype(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, PAGE_TYPE ptype)
static bool qmgr_can_get_result_from_cache(QUERY_FLAG flag)
int prm_get_integer_value(PARAM_ID prm_id)
#define ER_QPROC_OUT_OF_TEMP_SPACE
int er_set_area_error(char *server_area)
QMGR_QUERY_STATUS query_status
void qfile_destroy_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p)
int file_apply_tde_algorithm(THREAD_ENTRY *thread_p, const VFID *vfid, const TDE_ALGORITHM tde_algo)
#define ER_OUT_OF_VIRTUAL_MEMORY
static void qmgr_delete_query_entry(THREAD_ENTRY *thread_p, QUERY_ID query_id, int trans_ind)
QMGR_TEMP_FILE_MEMBUF_TYPE membuf_type
#define QFILE_PAGE_HEADER_SIZE
QMGR_TEMP_FILE_LIST temp_file_list[QMGR_NUM_TEMP_FILE_LISTS]
bool logtb_is_interrupted_tran(THREAD_ENTRY *thread_p, bool clear, bool *continue_checking, int tran_index)
int xcache_find_xasl_id_for_execute(THREAD_ENTRY *thread_p, const XASL_ID *xid, XASL_CACHE_ENTRY **xcache_entry, XASL_CLONE *xclone)
#define QMGR_TEMP_FILE_FREE_LIST_SIZE
#define ER_QPROC_UNKNOWN_QUERYID
QFILE_LIST_ID * qfile_duplicate_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, int flag)
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 xcache_unfix(THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry)
QMGR_TEMP_FILE * qmgr_create_new_temp_file(THREAD_ENTRY *thread_p, QUERY_ID query_id, QMGR_TEMP_FILE_MEMBUF_TYPE membuf_type)
#define QFILE_RESERVED_OFFSET
int qmgr_initialize(THREAD_ENTRY *thread_p)
#define CACHE_TIME_AS_ARGS(ct)
int qmgr_free_list_temp_file(THREAD_ENTRY *thread_p, QUERY_ID query_id, QMGR_TEMP_FILE *tfile_vfid_p)
xasl_cache_ent * xasl_ent
#define OID_EQ(oidp1, oidp2)
#define QFILE_NEXT_VOL_ID_OFFSET
QMGR_QUERY_TABLE qmgr_Query_table
static int qmgr_free_query_temp_file_helper(THREAD_ENTRY *thread_p, QMGR_QUERY_ENTRY *query_p)
static void qmgr_finalize_temp_file_list(QMGR_TEMP_FILE_LIST *temp_file_list_p)
static void qmgr_deallocate_oid_blocks(OID_BLOCK_LIST *oid_block)
int file_alloc(THREAD_ENTRY *thread_p, const VFID *vfid, FILE_INIT_PAGE_FUNC f_init, void *f_init_args, VPID *vpid_out, PAGE_PTR *page_out)
void file_temp_preserve(THREAD_ENTRY *thread_p, const VFID *vfid)
#define XASL_IS_FLAGED(x, f)
const char * er_msg(void)
#define IS_XASL_CACHE_PINNED_REFERENCE(flag)
int qfile_dump_list_cache_internal(THREAD_ENTRY *thread_p, FILE *fp)
int method_Num_method_jsp_calls
int crypt_md5_buffer_hex(const char *buffer, size_t len, char *resblock)
#define db_private_free_and_init(thrd, ptr)
#define pgbuf_fix(thread_p, vpid, fetch_mode, requestmode, condition)
#define CACHE_TIME_MAKE(CT, TV)
char * or_unpack_int(char *ptr, int *number)
#define db_private_free(thrd, ptr)
OID_BLOCK_LIST * modified_classes_p
#define db_private_alloc(thrd, size)
int file_create_temp(THREAD_ENTRY *thread_p, int npages, VFID *vfid)
int file_temp_retire_preserved(THREAD_ENTRY *thread_p, const VFID *vfid)
#define OR_PUT_SHORT(ptr, val)
int pr_clear_value(DB_VALUE *value)
void qmgr_add_modified_class(THREAD_ENTRY *thread_p, const OID *class_oid_p)
int xqmgr_end_query(THREAD_ENTRY *thread_p, QUERY_ID query_id)
QMGR_TEMP_FILE * temp_vfid
static void qmgr_put_page_header(PAGE_PTR page_p, QFILE_PAGE_HEADER *header_p)
void thread_trace_on(cubthread::entry *thread_p)
void qmgr_set_dirty_page(THREAD_ENTRY *thread_p, PAGE_PTR page_p, int free_page, LOG_DATA_ADDR *addr_p, QMGR_TEMP_FILE *tfile_vfid_p)
static void qmgr_initialize_temp_file_list(QMGR_TEMP_FILE_LIST *temp_file_list_p, QMGR_TEMP_FILE_MEMBUF_TYPE membuf_type)
static QMGR_TEMP_FILE * qmgr_allocate_tempfile_with_buffer(int num_buffer_pages)
struct timeval time_created
void free_xasl_unpack_info(THREAD_ENTRY *thread_p, REFPTR(XASL_UNPACK_INFO, xasl_unpack_info))
DB_VALUE_ARRAY bind_history[MAX_NUM_EXEC_QUERY_HISTORY]
char * or_pack_int(char *ptr, int number)
STATIC_INLINE void perfmon_inc_stat(THREAD_ENTRY *thread_p, PERF_STAT_ID psid) __attribute__((ALWAYS_INLINE))
QMGR_TRAN_STATUS trans_stat
LOG_TDES * LOG_FIND_CURRENT_TDES(THREAD_ENTRY *thread_p=NULL)
#define LOG_FIND_THREAD_TRAN_INDEX(thrd)
int xqmgr_drop_all_query_plans(THREAD_ENTRY *thread_p)
QUERY_ID qmgr_get_current_query_id(THREAD_ENTRY *thread_p)
bool qfile_has_no_cache_entries()
#define QFILE_PAGE_HEADER_INITIALIZER
#define QMGR_IS_VALID_MEMBUF_TYPE(m)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
#define QMGR_NUM_TEMP_FILE_LISTS
qfile_list_id * qexec_execute_query(THREAD_ENTRY *thread_p, xasl_node *xasl, int dbval_cnt, const DB_VALUE *dbval_ptr, QUERY_ID query_id)
#define QMGR_MAX_QUERY_ENTRY_PER_TRAN
QFILE_LIST_ID * qfile_clone_list_id(const QFILE_LIST_ID *list_id_p, bool is_include_sort_list)
#define free_and_init(ptr)
#define DB_ALIGN(offset, align)
PAGE_PTR qmgr_get_new_page(THREAD_ENTRY *thread_p, VPID *vpid_p, QMGR_TEMP_FILE *tfile_vfid_p)
static void qmgr_free_query_entry(THREAD_ENTRY *thread_p, QMGR_TRAN_ENTRY *tran_entry_p, QMGR_QUERY_ENTRY *q_ptr)
static bool qmgr_is_allowed_result_cache(QUERY_FLAG flag)
int oid_compare(const void *a, const void *b)
void xcache_dump(THREAD_ENTRY *thread_p, FILE *fp)
#define QMGR_SQL_ID_LENGTH
static void qmgr_free_oid_block(THREAD_ENTRY *thread_p, OID_BLOCK_LIST *oid_block)
#define QFILE_IS_LIST_CACHE_DISABLED
void fpcache_drop_all(THREAD_ENTRY *thread_p)
char * qmgr_get_query_sql_user_text(THREAD_ENTRY *thread_p, QUERY_ID query_id, int tran_index)
int xqmgr_prepare_query(THREAD_ENTRY *thread_p, COMPILE_CONTEXT *context, xasl_stream *stream)
static QMGR_PAGE_TYPE qmgr_get_page_type(PAGE_PTR page_p, QMGR_TEMP_FILE *temp_file_p)
void pgbuf_set_page_ptype(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, PAGE_TYPE ptype)
int session_set_trigger_state(THREAD_ENTRY *thread_p, bool in_trigger)
#define OR_PUT_INT(ptr, val)
void xqmgr_dump_query_plans(THREAD_ENTRY *thread_p, FILE *out_fp)
struct drand48_data * qmgr_get_rand_buf(THREAD_ENTRY *thread_p)
#define OID_BLOCK_ARRAY_SIZE
enum qmgr_page_type QMGR_PAGE_TYPE
xasl_unpack_info * xasl_buf
int qmgr_free_temp_file_list(THREAD_ENTRY *thread_p, QMGR_TEMP_FILE *tfile_vfid_p, QUERY_ID query_id, bool is_error)
char * pr_valstring(const DB_VALUE *val)
void qfile_close_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p)
#define QFILE_TUPLE_COUNT_OFFSET
int file_create_query_area(THREAD_ENTRY *thread_p, VFID *vfid)
static void qmgr_initialize_tran_entry(QMGR_TRAN_ENTRY *tran_entry_p)
static int copy_bind_value_to_tdes(THREAD_ENTRY *thread_p, int num_bind_vals, DB_VALUE *bind_vals)
#define ER_QPROC_INVALID_TEMP_FILE
void qfile_finalize(void)
char * strdup(const char *str)
QFILE_LIST_ID * xqmgr_prepare_and_execute_query(THREAD_ENTRY *thread_p, char *xasl_stream, int xasl_stream_size, QUERY_ID *query_id_p, int dbval_count, void *dbval_p, QUERY_FLAG *flag_p, int query_timeout)
int qfile_initialize(void)
int qmgr_get_sql_id(THREAD_ENTRY *thread_p, char **sql_id_buf, char *query, size_t sql_len)
#define IS_IN_METHOD_OR_JSP_CALL()
void fpcache_dump(THREAD_ENTRY *thread_p, FILE *fp)
QMGR_QUERY_ENTRY * query_entry_list_p
static QFILE_LIST_ID * qmgr_process_query(THREAD_ENTRY *thread_p, XASL_NODE *xasl_tree, char *xasl_stream, int xasl_stream_size, int dbval_count, const DB_VALUE *dbvals_p, QUERY_FLAG flag, QMGR_QUERY_ENTRY *query_p, QMGR_TRAN_ENTRY *tran_entry_p)
#define XASL_ID_SET_NULL(X)
QMGR_TEMP_FILE_MEMBUF_TYPE
#define VPID_SET_NULL(vpid_ptr)
OID_BLOCK_LIST * free_oid_block_list_p
void qmgr_finalize(THREAD_ENTRY *thread_p)
void xcache_drop_all(THREAD_ENTRY *thread_p)
#define VFID_SET_NULL(vfid_ptr)
char * or_unpack_db_value(char *buffer, DB_VALUE *val)
QMGR_TRAN_ENTRY * tran_entries_p
#define IS_XASL_TRACE_TEXT(flag)
static int qmgr_free_query_temp_file(THREAD_ENTRY *thread_p, QMGR_QUERY_ENTRY *qptr, int tran_idx)
void xqmgr_dump_query_cache(THREAD_ENTRY *thread_p, FILE *out_fp)
#define XASL_RETURN_GENERATED_KEYS
#define MAX_NUM_EXEC_QUERY_HISTORY
QMGR_QUERY_ENTRY * qmgr_get_query_entry(THREAD_ENTRY *thread_p, QUERY_ID query_id, int tran_index)
static bool qmgr_can_get_from_cache(QUERY_FLAG flag)
int xsession_load_query_entry_info(THREAD_ENTRY *thread_p, QMGR_QUERY_ENTRY *qentry_p)