CUBRID Engine
latest
|
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "error_manager.h"
#include "storage_common.h"
#include "memory_alloc.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "db.h"
#include "locator_cl.h"
#include "server_interface.h"
#include "work_space.h"
#include "set_object.h"
#include "cursor.h"
#include "parser_support.h"
#include "virtual_object.h"
#include "network_interface_cl.h"
#include "dbtype.h"
Go to the source code of this file.
Macros | |
#define | CURSOR_BUFFER_SIZE DB_PAGESIZE |
#define | CURSOR_BUFFER_AREA_SIZE IO_MAX_PAGE_SIZE |
Enumerations | |
enum | { FIRST_TPL = -1, LAST_TPL = -2 } |
#define CURSOR_BUFFER_AREA_SIZE IO_MAX_PAGE_SIZE |
Definition at line 48 of file cursor.c.
Referenced by cursor_open().
#define CURSOR_BUFFER_SIZE DB_PAGESIZE |
Definition at line 47 of file cursor.c.
Referenced by cursor_copy_list_id(), and cursor_get_list_file_page().
|
static |
Definition at line 1140 of file cursor.c.
References assert, CEIL_PTVDIV, DB_PAGESIZE, free_and_init, cursor_id::mop_set, NULL, cursor_id::oid_ent_count, and cursor_id::oid_set.
Referenced by cursor_open(), and cursor_set_oid_columns().
|
static |
Definition at line 640 of file cursor.c.
References assert, ER_FAILED, NO_ERROR, NULL, qfile_tuple_record::size, qfile_tuple_record::tpl, and cursor_id::tuple_record.
Referenced by cursor_construct_tuple_from_overflow_pages().
Definition at line 946 of file cursor.c.
References assert, cursor_id::buffer, cursor_get_list_file_page(), ER_FAILED, qfile_list_id::first_vpid, qfile_list_id::last_pgptr, cursor_id::list_id, NO_ERROR, NULL, and VPID_EQ.
Referenced by cursor_fetch_page_having_tuple().
void cursor_close | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1381 of file cursor.c.
References assert, cursor_id::buffer_tuple_count, C_BEFORE, cursor_id::current_tuple_length, cursor_id::current_tuple_no, cursor_id::current_tuple_offset, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_free(), cursor_initialize_current_tuple_value_position(), cursor_id::header_vpid, cursor_id::is_updatable, cursor_id::next_vpid, NULL, NULL_PAGEID, cursor_id::oid_col_no, cursor_id::oid_col_no_cnt, cursor_id::oid_ent_count, vpid::pageid, cursor_id::position, cursor_id::query_id, and cursor_id::tuple_no.
Referenced by cursor_fetch_page_having_tuple(), db_query_end_internal(), delete_list_by_oids(), do_execute_session_statement(), insert_subquery_results(), method_clear_scan_buffer(), method_invoke_for_server(), pt_get_one_tuple_from_list_id(), pt_set_table_to_db(), and update_objs_for_list_file().
|
static |
Definition at line 667 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_allocate_tuple_area(), cursor_get_list_file_page(), ER_FAILED, NO_ERROR, NULL, NULL_PAGEID, vpid::pageid, QFILE_COPY_VPID, QFILE_GET_OVERFLOW_VPID, QFILE_GET_TUPLE_LENGTH, QFILE_MAX_TUPLE_SIZE_IN_PAGE, QFILE_PAGE_HEADER_SIZE, qfile_tuple_record::size, qfile_tuple_record::tpl, cursor_id::tuple_record, and VPID_EQ.
Referenced by cursor_fetch_page_having_tuple().
int cursor_copy_list_id | ( | QFILE_LIST_ID * | dest_list_id_p, |
const QFILE_LIST_ID * | src_list_id_p | ||
) |
Definition at line 105 of file cursor.c.
References qfile_tuple_descriptor::clear_f_val_at_clone_decache, CURSOR_BUFFER_SIZE, DB_SIZEOF, qfile_tuple_value_type_list::domp, ER_FAILED, qfile_tuple_descriptor::f_valp, qfile_list_id::last_pgptr, NO_ERROR, NULL, qfile_list_id::sort_list, qfile_list_id::tpl_descr, qfile_tuple_value_type_list::type_cnt, and qfile_list_id::type_list.
Referenced by cursor_open().
Definition at line 334 of file cursor.c.
References pr_type::data_readval(), DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, db_make_object(), DB_TYPE_VOBJ, db_value_domain_init(), ER_FAILED, pr_type::id, NO_ERROR, NULL, pr_clear_value(), pr_type_from_id(), rc, and vid_vobj_to_object().
Referenced by cursor_get_oid_from_vobj(), cursor_get_tuple_value_to_dbvalue(), and vid_decode_object().
|
static |
Definition at line 741 of file cursor.c.
References assert, er_errid(), ER_FAILED, ER_HEAP_UNKNOWN_OBJECT, i, LC_FETCH_MVCC_VERSION, locator_fetch_object(), locator_fetch_set(), cursor_id::mop_set, NO_ERROR, NULL, cursor_id::oid_set, OR_GET_OID, and ws_mop().
Referenced by cursor_prefetch_column_oids(), and cursor_prefetch_first_hidden_oid().
int cursor_fetch_page_having_tuple | ( | CURSOR_ID * | cursor_id_p, |
VPID * | vpid_p, | ||
int | position, | ||
int | offset | ||
) |
Definition at line 992 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::buffer_tuple_count, cleanup(), cubregex::count(), cursor_id::current_tuple_offset, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_buffer_last_page(), cursor_close(), cursor_construct_tuple_from_overflow_pages(), cursor_get_tuple_value_list(), cursor_has_first_hidden_oid(), cursor_initialize_current_tuple_value_position(), cursor_next_tuple(), cursor_open(), cursor_point_current_tuple(), cursor_prefetch_column_oids(), cursor_prefetch_first_hidden_oid(), DB_CURSOR_SUCCESS, db_get_set(), db_set_print(), DB_TYPE_VOBJ, db_value_clear(), db_value_print(), DB_VALUE_TYPE, ER_FAILED, free_and_init, i, NO_ERROR, NULL, NULL_PAGEID, cursor_id::oid_col_no, cursor_id::oid_col_no_cnt, QFILE_GET_OVERFLOW_PAGE_ID, cursor_id::query_id, TP_IS_SET_TYPE, qfile_tuple_value_type_list::type_cnt, qfile_list_id::type_list, and VPID_EQ.
Referenced by cursor_first_tuple(), cursor_last_tuple(), cursor_next_tuple(), cursor_prev_tuple(), and db_query_set_tplpos().
int cursor_first_tuple | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1652 of file cursor.c.
References assert, cursor_id::buffer_tuple_count, C_AFTER, C_ON, cursor_id::current_vpid, cursor_fetch_page_having_tuple(), DB_CURSOR_END, DB_CURSOR_ERROR, DB_CURSOR_SUCCESS, FIRST_TPL, qfile_list_id::first_vpid, cursor_id::list_id, NO_ERROR, NULL, cursor_id::position, QFILE_COPY_VPID, qfile_list_id::tuple_cnt, cursor_id::tuple_no, and VPID_ISNULL.
Referenced by db_query_first_tuple().
|
static |
Definition at line 186 of file cursor.c.
References cursor_fixup_vobjs(), cursor_has_set_vobjs(), db_get_set(), db_make_multiset(), db_make_sequence(), db_make_set(), db_seq_create(), db_seq_put(), db_set_add(), db_set_create_basic(), db_set_create_multi(), db_set_free(), db_set_get(), db_set_size(), DB_TYPE_MULTISET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_VALUE_TYPE, ER_FAILED, i, NO_ERROR, NULL, pr_clear_value(), pr_is_set_type(), rc, and set_convert_oids_to_objects().
Referenced by cursor_fixup_vobjs().
|
static |
Definition at line 283 of file cursor.c.
References cursor_fixup_set_vobjs(), DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_make_object(), DB_TYPE_MULTISET, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_VOBJ, db_value_clear(), db_value_domain_init(), DB_VALUE_DOMAIN_TYPE, db_value::need_clear, NO_ERROR, pr_clear_value(), rc, vid_oid_to_object(), and vid_vobj_to_object().
Referenced by cursor_fixup_set_vobjs(), and cursor_get_tuple_value_to_dbvalue().
void cursor_free | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1342 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::buffer_area, cursor_id::buffer_filled_size, cursor_free_list_id, free_and_init, i, cursor_id::list_id, cursor_id::mop_set, NULL, cursor_id::oid_ent_count, cursor_id::oid_set, qfile_tuple_record::tpl, and cursor_id::tuple_record.
Referenced by cursor_close().
Definition at line 1449 of file cursor.c.
References assert, cursor_get_first_tuple_value(), cursor_peek_tuple(), ER_FAILED, cursor_id::is_copy_tuple_value, cursor_id::is_oid_included, cursor_id::list_id, NULL, and qfile_list_id::type_list.
Referenced by db_query_get_tuple_oid(), res_delete_row_internal(), and rs_set_db_value().
|
static |
Definition at line 484 of file cursor.c.
References cursor_get_tuple_value_to_dbvalue(), qfile_tuple_value_type_list::domp, or_init(), or_buf::ptr, QFILE_GET_TUPLE_LENGTH, QFILE_GET_TUPLE_VALUE_FLAG, QFILE_TUPLE_LENGTH_SIZE, and QFILE_TUPLE_VALUE_HEADER_SIZE.
Referenced by cursor_get_current_oid().
Definition at line 507 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::buffer_area, cursor_id::buffer_filled_size, cursor_id::current_vpid, CURSOR_BUFFER_SIZE, ER_FAILED, cursor_id::header_vpid, NO_ERROR, NULL, NULL_PAGEID, page_size, vpid::pageid, QFILE_COPY_VPID, qfile_get_list_file_page(), QFILE_GET_NEXT_VPID, QFILE_GET_OVERFLOW_PAGE_ID, QFILE_GET_OVERFLOW_VPID, cursor_id::query_id, vpid::volid, VPID_EQ, and VPID_ISNULL.
Referenced by cursor_buffer_last_page(), and cursor_construct_tuple_from_overflow_pages().
Definition at line 623 of file cursor.c.
References cursor_get_oid_from_vobj(), DB_TYPE_VOBJ, QFILE_GET_TUPLE_VALUE_LENGTH, and QFILE_TUPLE_VALUE_HEADER_SIZE.
Referenced by cursor_prefetch_column_oids(), and cursor_prefetch_first_hidden_oid().
Definition at line 592 of file cursor.c.
References cursor_copy_vobj_to_dbvalue(), db_get_object(), db_make_null(), NO_ERROR, NULL, or_init(), vid_base_instance(), vid_is_updatable(), WS_ISVID, and WS_OID.
Referenced by cursor_get_oid_from_tuple().
Definition at line 1734 of file cursor.c.
References ARG_FILE_LINE, assert, cursor_get_tuple_value_from_list(), cursor_peek_tuple(), ER_ERROR_SEVERITY, ER_FAILED, ER_QPROC_INVALID_TPLVAL_INDEX, er_set(), cursor_id::is_oid_included, cursor_id::list_id, NULL, qfile_tuple_value_type_list::type_cnt, and qfile_list_id::type_list.
Referenced by cursor_get_tuple_value_list(), db_query_get_tuple_value(), and pt_evaluate_tree_internal().
|
static |
Definition at line 425 of file cursor.c.
References assert, cursor_id::current_tuple_value_index, cursor_id::current_tuple_value_p, cursor_get_tuple_value_to_dbvalue(), qfile_tuple_value_type_list::domp, ER_FAILED, i, cursor_id::is_copy_tuple_value, cursor_id::list_id, NULL, or_init(), or_buf::ptr, QFILE_GET_TUPLE_LENGTH, QFILE_GET_TUPLE_VALUE_FLAG, QFILE_GET_TUPLE_VALUE_LENGTH, QFILE_TUPLE_LENGTH_SIZE, QFILE_TUPLE_VALUE_HEADER_SIZE, and qfile_list_id::type_list.
Referenced by cursor_get_tuple_value().
Definition at line 1778 of file cursor.c.
References assert, cursor_get_tuple_value(), ER_FAILED, NO_ERROR, and NULL.
Referenced by cursor_fetch_page_having_tuple(), db_query_get_tuple_valuelist(), delete_list_by_oids(), do_execute_session_statement(), insert_subquery_results(), method_invoke_for_server(), method_receive_results_for_stand_alone(), pt_get_one_tuple_from_list_id(), pt_set_table_to_db(), and update_objs_for_list_file().
|
static |
Definition at line 376 of file cursor.c.
References cursor_copy_vobj_to_dbvalue(), cursor_fixup_vobjs(), pr_type::data_readval(), DB_TYPE_VOBJ, db_value_domain_init(), ER_FAILED, pr_type::id, NO_ERROR, NULL, tp_domain::precision, tp_domain::scale, tp_domain::type, and V_UNBOUND.
Referenced by cursor_get_first_tuple_value(), and cursor_get_tuple_value_from_list().
Definition at line 728 of file cursor.c.
References assert, DB_TYPE_OBJECT, qfile_tuple_value_type_list::domp, cursor_id::is_oid_included, cursor_id::list_id, NULL, cursor_id::oid_ent_count, TP_DOMAIN_TYPE, and qfile_list_id::type_list.
Referenced by cursor_fetch_page_having_tuple().
Definition at line 153 of file cursor.c.
References db_set_get(), db_set_size(), DB_TYPE_VOBJ, DB_VALUE_TYPE, i, NO_ERROR, and pr_clear_value().
Referenced by cursor_fixup_set_vobjs().
|
static |
Definition at line 85 of file cursor.c.
References assert, cursor_id::current_tuple_value_index, cursor_id::current_tuple_value_p, and NULL.
Referenced by cursor_close(), cursor_fetch_page_having_tuple(), cursor_next_tuple(), cursor_open(), and cursor_prev_tuple().
int cursor_last_tuple | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1696 of file cursor.c.
References assert, C_ON, cursor_id::current_vpid, cursor_fetch_page_having_tuple(), DB_CURSOR_END, DB_CURSOR_ERROR, DB_CURSOR_SUCCESS, qfile_list_id::first_vpid, LAST_TPL, qfile_list_id::last_vpid, cursor_id::list_id, NO_ERROR, NULL, cursor_id::position, QFILE_COPY_VPID, qfile_list_id::tuple_cnt, cursor_id::tuple_no, and VPID_ISNULL.
Referenced by db_query_last_tuple().
int cursor_next_tuple | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1482 of file cursor.c.
References ARG_FILE_LINE, assert, cursor_id::buffer, cursor_id::buffer_tuple_count, C_AFTER, C_BEFORE, C_ON, cursor_id::current_tuple_length, cursor_id::current_tuple_no, cursor_id::current_tuple_offset, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_fetch_page_having_tuple(), cursor_initialize_current_tuple_value_position(), DB_CURSOR_END, DB_CURSOR_ERROR, DB_CURSOR_SUCCESS, ER_ERROR_SEVERITY, ER_QPROC_UNKNOWN_CRSPOS, er_set(), FIRST_TPL, qfile_list_id::first_vpid, cursor_id::list_id, NO_ERROR, NULL, NULL_PAGEID, cursor_id::position, QFILE_COPY_VPID, QFILE_GET_NEXT_PAGE_ID, QFILE_GET_NEXT_VPID, QFILE_GET_TUPLE_LENGTH, cursor_id::query_id, qfile_list_id::tuple_cnt, cursor_id::tuple_no, and VPID_ISNULL.
Referenced by cursor_fetch_page_having_tuple(), db_query_next_tuple(), delete_list_by_oids(), do_execute_session_statement(), insert_subquery_results(), method_invoke_for_server(), method_receive_results_for_stand_alone(), pt_get_one_tuple_from_list_id(), pt_set_table_to_db(), and update_objs_for_list_file().
bool cursor_open | ( | CURSOR_ID * | cursor_id_p, |
QFILE_LIST_ID * | list_id_p, | ||
bool | updatable, | ||
bool | is_oid_included | ||
) |
Definition at line 1194 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::buffer_area, cursor_id::buffer_filled_size, cursor_id::buffer_tuple_count, C_BEFORE, cursor_id::current_tuple_length, cursor_id::current_tuple_no, cursor_id::current_tuple_offset, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_allocate_oid_buffer(), CURSOR_BUFFER_AREA_SIZE, cursor_copy_list_id(), cursor_initialize_current_tuple_value_position(), DB_FETCH_READ, cursor_id::header_vpid, cursor_id::is_copy_tuple_value, cursor_id::is_oid_included, cursor_id::is_updatable, cursor_id::list_id, cursor_id::mop_set, cursor_id::next_vpid, NO_ERROR, NULL, cursor_id::oid_col_no, cursor_id::oid_col_no_cnt, cursor_id::oid_ent_count, cursor_id::oid_set, cursor_id::on_overflow, cursor_id::position, cursor_id::prefetch_lock_mode, QFILE_CLEAR_LIST_ID, cursor_id::query_id, qfile_list_id::query_id, qfile_tuple_record::size, qfile_tuple_record::tpl, cursor_id::tuple_no, cursor_id::tuple_record, qfile_tuple_value_type_list::type_cnt, qfile_list_id::type_list, and VPID_SET_NULL.
Referenced by cursor_fetch_page_having_tuple(), delete_list_by_oids(), do_execute_session_statement(), insert_subquery_results(), method_invoke_for_server(), method_invoke_from_stand_alone(), pt_get_one_tuple_from_list_id(), pt_new_query_result_descriptor(), pt_set_table_to_db(), and update_objs_for_list_file().
|
static |
Definition at line 1420 of file cursor.c.
References ARG_FILE_LINE, assert, C_ON, cursor_id::current_tuple_p, ER_ERROR_SEVERITY, ER_QPROC_INVALID_CRSPOS, er_set(), NULL, and cursor_id::position.
Referenced by cursor_get_current_oid(), and cursor_get_tuple_value().
|
static |
Definition at line 911 of file cursor.c.
References assert, cursor_id::buffer, cursor_id::buffer_tuple_count, cursor_id::current_tuple_length, cursor_id::current_tuple_no, cursor_id::current_tuple_offset, ER_FAILED, FIRST_TPL, LAST_TPL, NO_ERROR, NULL, QFILE_GET_LAST_TUPLE_OFFSET, QFILE_GET_TUPLE_COUNT, QFILE_GET_TUPLE_LENGTH, and QFILE_PAGE_HEADER_SIZE.
Referenced by cursor_fetch_page_having_tuple().
|
static |
Definition at line 841 of file cursor.c.
References assert, cursor_id::buffer, COPY_OID, cursor_fetch_oids(), cursor_get_oid_from_tuple(), DB_FETCH_QUERY_READ, DB_FETCH_READ, DB_TYPE_OBJECT, DB_TYPE_VOBJ, qfile_tuple_value_type_list::domp, ER_FAILED, cursor_id::list_id, NULL, cursor_id::oid_col_no, cursor_id::oid_col_no_cnt, cursor_id::oid_set, OR_PUT_OID, QFILE_GET_TUPLE_COUNT, QFILE_GET_TUPLE_LENGTH, QFILE_GET_TUPLE_VALUE_FLAG, QFILE_GET_TUPLE_VALUE_LENGTH, QFILE_PAGE_HEADER_SIZE, QFILE_TUPLE_LENGTH_SIZE, QFILE_TUPLE_VALUE_HEADER_SIZE, TP_DOMAIN_TYPE, qfile_list_id::type_list, and V_BOUND.
Referenced by cursor_fetch_page_having_tuple().
|
static |
Definition at line 787 of file cursor.c.
References assert, cursor_id::buffer, COPY_OID, cursor_fetch_oids(), cursor_get_oid_from_tuple(), DB_FETCH_QUERY_READ, DB_FETCH_QUERY_WRITE, DB_FETCH_WRITE, qfile_tuple_value_type_list::domp, ER_FAILED, i, cursor_id::list_id, NULL, cursor_id::oid_set, cursor_id::prefetch_lock_mode, QFILE_GET_TUPLE_COUNT, QFILE_GET_TUPLE_LENGTH, QFILE_GET_TUPLE_VALUE_FLAG, QFILE_PAGE_HEADER_SIZE, QFILE_TUPLE_LENGTH_SIZE, TP_DOMAIN_TYPE, qfile_list_id::type_list, and V_BOUND.
Referenced by cursor_fetch_page_having_tuple().
int cursor_prev_tuple | ( | CURSOR_ID * | cursor_id_p | ) |
Definition at line 1568 of file cursor.c.
References ARG_FILE_LINE, assert, cursor_id::buffer, C_AFTER, C_BEFORE, C_ON, cursor_id::current_tuple_length, cursor_id::current_tuple_no, cursor_id::current_tuple_offset, cursor_id::current_tuple_p, cursor_id::current_vpid, cursor_fetch_page_having_tuple(), cursor_initialize_current_tuple_value_position(), DB_CURSOR_END, DB_CURSOR_ERROR, DB_CURSOR_SUCCESS, ER_ERROR_SEVERITY, ER_QPROC_UNKNOWN_CRSPOS, er_set(), qfile_list_id::first_vpid, LAST_TPL, qfile_list_id::last_vpid, cursor_id::list_id, NO_ERROR, NULL, NULL_PAGEID, cursor_id::position, QFILE_COPY_VPID, QFILE_GET_PREV_PAGE_ID, QFILE_GET_PREV_TUPLE_LENGTH, QFILE_GET_PREV_VPID, QFILE_GET_TUPLE_LENGTH, cursor_id::tuple_no, and VPID_ISNULL.
Referenced by db_query_prev_tuple().
Definition at line 1291 of file cursor.c.
References assert, cursor_id::is_copy_tuple_value, and NULL.
Referenced by db_query_set_copy_tplvalue().
int cursor_set_oid_columns | ( | CURSOR_ID * | cursor_id_p, |
int * | oid_col_no_p, | ||
int | oid_col_no_cnt | ||
) |
Definition at line 1322 of file cursor.c.
References cursor_allocate_oid_buffer(), ER_FAILED, cursor_id::is_oid_included, cursor_id::is_updatable, NO_ERROR, NULL, cursor_id::oid_col_no, and cursor_id::oid_col_no_cnt.
Referenced by db_query_prefetch_columns(), method_invoke_for_server(), and method_invoke_from_stand_alone().
DB_FETCH_MODE cursor_set_prefetch_lock_mode | ( | CURSOR_ID * | cursor_id_p, |
DB_FETCH_MODE | mode | ||
) |
Definition at line 1267 of file cursor.c.
References assert, mode, NULL, and cursor_id::prefetch_lock_mode.
Referenced by update_objs_for_list_file().