47 #define CURSOR_BUFFER_SIZE DB_PAGESIZE 48 #define CURSOR_BUFFER_AREA_SIZE IO_MAX_PAGE_SIZE 87 if (cursor_id_p ==
NULL)
113 src_type_list_p = &(src_list_id_p->
type_list);
114 dest_type_list_p = &(dest_list_id_p->
type_list);
126 memcpy (dest_type_list_p->
domp, src_type_list_p->
domp, size);
160 for (i = 0; i < size; i++)
223 for (i = 0; i < size; i++)
382 pr_type = domain_p->
type;
432 if (cursor_id_p ==
NULL)
440 assert (index >= 0 && index < type_list_p->type_cnt);
457 for (; i <
index; i++)
468 buffer.
ptr = tuple_p;
495 buffer.
ptr = tuple_p;
513 if (cursor_id_p ==
NULL || vpid_p ==
NULL)
559 else if (
VPID_EQ (vpid_p, &in_vpid))
599 vobject_p = (
char *) current_oid_p;
600 current_oid_p =
NULL;
601 or_init (&buffer, vobject_p, length);
612 if (object_p && !
WS_ISVID (object_p))
614 current_oid_p =
WS_OID (object_p);
619 return current_oid_p;
636 return current_oid_p;
642 if (cursor_id_p ==
NULL)
671 char *tmp_tuple_p, *tuple_p;
672 int tuple_length, offset, tuple_page_size;
674 if (cursor_id_p ==
NULL || vpid_p ==
NULL)
697 buffer_p = cursor_id_p->
buffer;
702 tuple_p += tuple_page_size;
703 offset += tuple_page_size;
730 if (cursor_id_p ==
NULL)
748 if (cursor_id_p ==
NULL)
761 for (i = 0; i < oid_index; i++)
792 int tupel_count, oid_index = 0, current_tuple_length,
i;
795 if (cursor_id_p ==
NULL)
810 for (i = 0; i < tupel_count; i++)
825 if (current_oid_p && oid_index < cursor_id_p->oid_ent_count)
832 current_tuple = (
char *) current_tuple + current_tuple_length;
846 int tuple_count, oid_index = 0, current_tuple_length;
847 int j, tuple_index, col_index, col_num;
850 if (cursor_id_p ==
NULL)
861 for (tuple_index = 0; tuple_index < tuple_count; tuple_index++)
865 for (col_index = 0; col_index < cursor_id_p->
oid_col_no_cnt; col_index++)
871 for (j = col_num - 1; j >= 0; --j)
888 if (current_oid_p && oid_index < cursor_id_p->oid_ent_count)
904 current_tuple = (
char *) current_tuple + current_tuple_length;
932 else if (position < cursor_id_p->buffer_tuple_count)
948 if (cursor_id_p ==
NULL || vpid_p ==
NULL)
994 if (cursor_id_p ==
NULL || vpid_p ==
NULL)
1054 #if defined(WINDOWS) || defined (CUBRID_DEBUG) 1062 cursor_print_list (QUERY_ID query_id,
QFILE_LIST_ID * list_id_p)
1068 if (list_id_p ==
NULL)
1076 if (value_list_p ==
NULL)
1081 fprintf (stdout,
"\n================= Q U E R Y R E S U L T S =================\n\n");
1083 if (
cursor_open (&cursor_id, list_id_p,
false,
false) ==
false)
1104 fprintf (stdout,
"\n ");
1106 for (i = 0, value_p = value_list_p; i <
count; i++, value_p++)
1108 fprintf (stdout,
" ");
1120 fprintf (stdout,
" ");
1124 fprintf (stdout,
"\n");
1142 size_t oids_size, mops_size;
1144 if (cursor_id_p ==
NULL)
1158 cursor_id_p->
oid_set = (
OID *) malloc (oids_size);
1167 cursor_id_p->
mop_set = (
MOP *) malloc (mops_size);
1198 if (cursor_id_p ==
NULL)
1229 cursor_id_p->
list_id = empty_list_id;
1251 if (is_oid_included)
1271 if (cursor_id_p ==
NULL)
1295 if (cursor_id_p ==
NULL)
1346 if (cursor_id_p ==
NULL)
1383 if (cursor_id_p ==
NULL)
1407 cursor_id_p->
query_id = NULL_QUERY_ID;
1422 if (cursor_id_p ==
NULL)
1453 if (cursor_id_p ==
NULL)
1462 if (tuple_p ==
NULL)
1484 if (cursor_id_p ==
NULL || cursor_id_p->
query_id == NULL_QUERY_ID)
1570 if (cursor_id_p ==
NULL)
1654 if (cursor_id_p ==
NULL)
1698 if (cursor_id_p ==
NULL)
1738 if (cursor_id_p ==
NULL)
1756 if (tuple_p ==
NULL)
1783 if (cursor_id_p ==
NULL)
1790 value_p = value_list_p;
1792 while (index < size)
#define QFILE_TUPLE_VALUE_HEADER_SIZE
static int cursor_prefetch_column_oids(CURSOR_ID *cursor_id_p)
#define QFILE_CLEAR_LIST_ID(list_id)
int data_readval(struct or_buf *buf, DB_VALUE *value, const tp_domain *domain, int size, bool copy, char *copy_buf, int copy_buf_len) const
#define OR_PUT_OID(ptr, oid)
static int cursor_buffer_last_page(CURSOR_ID *cursor_id_p, VPID *vpid_p)
#define CURSOR_BUFFER_SIZE
int cursor_copy_vobj_to_dbvalue(struct or_buf *buffer_p, DB_VALUE *value_p)
#define ER_QPROC_INVALID_TPLVAL_INDEX
DB_COLLECTION * db_get_set(const DB_VALUE *value)
int cursor_get_tuple_value(CURSOR_ID *cursor_id_p, int index, DB_VALUE *value_p)
QFILE_TUPLE_VALUE_TYPE_LIST type_list
MOP ws_mop(const OID *oid, MOP class_mop)
DB_SET * db_seq_create(MOP classop, const char *name, int size)
MOBJ locator_fetch_set(int num_mops, MOP *mop_set, DB_FETCH_MODE inst_purpose, DB_FETCH_MODE class_purpose, int quit_on_errors)
#define TP_IS_SET_TYPE(typenum)
static char * cursor_peek_tuple(CURSOR_ID *cursor_id)
static int cursor_fixup_vobjs(DB_VALUE *val)
int db_seq_put(DB_SET *set, int index, DB_VALUE *value)
static void cursor_initialize_current_tuple_value_position(CURSOR_ID *cursor_id_p)
#define QFILE_GET_NEXT_PAGE_ID(ptr)
DB_FETCH_MODE cursor_set_prefetch_lock_mode(CURSOR_ID *cursor_id_p, DB_FETCH_MODE mode)
int cursor_next_tuple(CURSOR_ID *cursor_id_p)
#define QFILE_GET_PREV_TUPLE_LENGTH(tpl)
static int cursor_point_current_tuple(CURSOR_ID *cursor_id_p, int position, int offset)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
int vid_oid_to_object(const DB_VALUE *value, DB_OBJECT **mop)
DB_FETCH_MODE prefetch_lock_mode
int db_make_sequence(DB_VALUE *value, DB_C_SET *set)
DB_SET * db_set_create_multi(MOP classop, const char *name)
bool * clear_f_val_at_clone_decache
QFILE_TUPLE_DESCRIPTOR tpl_descr
int db_set_print(DB_SET *set)
int cursor_fetch_page_having_tuple(CURSOR_ID *cursor_id_p, VPID *vpid_p, int position, int offset)
#define COPY_OID(dest_oid_ptr, src_oid_ptr)
#define cursor_free_list_id(list_id)
static int cursor_get_list_file_page(CURSOR_ID *cursor_id, VPID *vpid)
#define ER_QPROC_INVALID_CRSPOS
MOBJ locator_fetch_object(MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE fetch_version_type)
int cursor_last_tuple(CURSOR_ID *cursor_id_p)
#define QFILE_GET_TUPLE_VALUE_FLAG(ptr)
bool pr_is_set_type(DB_TYPE type)
#define QFILE_MAX_TUPLE_SIZE_IN_PAGE
static int cursor_allocate_tuple_area(CURSOR_ID *cursor_id_p, int tuple_length)
PR_TYPE * pr_type_from_id(DB_TYPE id)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
int db_set_get(DB_SET *set, int index, DB_VALUE *value)
int cursor_get_current_oid(CURSOR_ID *cursor_id_p, DB_VALUE *value_p)
char * current_tuple_value_p
int db_make_set(DB_VALUE *value, DB_C_SET *set)
int db_make_multiset(DB_VALUE *value, DB_C_SET *set)
static bool cursor_has_first_hidden_oid(CURSOR_ID *cursor_id_p)
static int cursor_construct_tuple_from_overflow_pages(CURSOR_ID *cursor_id_p, VPID *vpid_p)
#define QFILE_PAGE_HEADER_SIZE
#define OR_GET_OID(ptr, oid)
#define QFILE_GET_PREV_PAGE_ID(ptr)
#define DB_VALUE_DOMAIN_TYPE(value)
#define QFILE_GET_PREV_VPID(des, ptr)
static int cursor_get_tuple_value_from_list(CURSOR_ID *c_id, int index, DB_VALUE *value, char *tuple)
static enum scanner_mode mode
#define VPID_EQ(vpid_ptr1, vpid_ptr2)
int cursor_set_oid_columns(CURSOR_ID *cursor_id_p, int *oid_col_no_p, int oid_col_no_cnt)
DB_OBJECT * db_get_object(const DB_VALUE *value)
#define TP_DOMAIN_TYPE(dom)
static void cleanup(int signo)
#define QFILE_GET_TUPLE_VALUE_LENGTH(ptr)
static int cursor_prefetch_first_hidden_oid(CURSOR_ID *cursor_id_p)
#define QFILE_TUPLE_LENGTH_SIZE
void db_value_print(const DB_VALUE *value)
#define ER_QPROC_UNKNOWN_CRSPOS
#define QFILE_COPY_VPID(ptr1, ptr2)
#define QFILE_GET_TUPLE_LENGTH(tpl)
static int cursor_fetch_oids(CURSOR_ID *cursor_id_p, int oid_index, DB_FETCH_MODE instant_fetch_mode, DB_FETCH_MODE class_fetch_mode)
int db_set_add(DB_SET *set, DB_VALUE *value)
#define CURSOR_BUFFER_AREA_SIZE
DB_SET * db_set_create_basic(MOP classop, const char *name)
int db_set_free(DB_SET *set)
bool cursor_set_copy_tuple_value(CURSOR_ID *cursor_id_p, bool is_copy)
void or_init(OR_BUF *buf, char *data, int length)
need_clear_type need_clear
#define CEIL_PTVDIV(dividend, divisor)
int db_set_size(DB_SET *set)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
static int cursor_fixup_set_vobjs(DB_VALUE *value)
int pr_clear_value(DB_VALUE *value)
int vid_vobj_to_object(const DB_VALUE *vobj, DB_OBJECT **mop)
static void cursor_allocate_oid_buffer(CURSOR_ID *cursor_id_p)
#define VPID_ISNULL(vpid_ptr)
#define DB_DEFAULT_PRECISION
static OID * cursor_get_oid_from_vobj(OID *current_oid_p, int length)
bool vid_is_updatable(MOP mop)
int cursor_copy_list_id(QFILE_LIST_ID *dest_list_id_p, const QFILE_LIST_ID *src_list_id_p)
QFILE_TUPLE_RECORD tuple_record
#define free_and_init(ptr)
#define QFILE_GET_OVERFLOW_VPID(des, ptr)
#define ER_HEAP_UNKNOWN_OBJECT
#define DB_CURSOR_SUCCESS
static bool cursor_has_set_vobjs(DB_SET *set)
void cursor_free(CURSOR_ID *cursor_id_p)
int current_tuple_value_index
int cursor_prev_tuple(CURSOR_ID *cursor_id_p)
void cursor_close(CURSOR_ID *cursor_id_p)
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
MOP vid_base_instance(MOP mop)
#define DB_IS_NULL(value)
static OID * cursor_get_oid_from_tuple(char *tuple_p, DB_TYPE type)
#define QFILE_GET_LAST_TUPLE_OFFSET(ptr)
int db_value_clear(DB_VALUE *value)
#define QFILE_GET_TUPLE_COUNT(ptr)
#define QFILE_GET_NEXT_VPID(des, ptr)
static int cursor_get_first_tuple_value(char *tuple, QFILE_TUPLE_VALUE_TYPE_LIST *type_list, DB_VALUE *value, bool copy)
static int cursor_get_tuple_value_to_dbvalue(OR_BUF *buf, TP_DOMAIN *dom, QFILE_TUPLE_VALUE_FLAG val_flag, DB_VALUE *db_value, bool copy)
bool cursor_open(CURSOR_ID *cursor_id_p, QFILE_LIST_ID *list_id_p, bool updatable, bool is_oid_included)
#define VPID_SET_NULL(vpid_ptr)
int set_convert_oids_to_objects(DB_COLLECTION *set)
int cursor_get_tuple_value_list(CURSOR_ID *cursor_id_p, int size, DB_VALUE *value_list_p)
int qfile_get_list_file_page(QUERY_ID query_id, VOLID volid, PAGEID pageid, char *buffer, int *buffer_size)
#define QFILE_GET_OVERFLOW_PAGE_ID(ptr)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
int cursor_first_tuple(CURSOR_ID *cursor_id_p)