CUBRID Engine  latest
cursor.c File Reference
#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"
Include dependency graph for cursor.c:

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 }
 

Functions

static void cursor_initialize_current_tuple_value_position (CURSOR_ID *cursor_id_p)
 
static bool cursor_has_set_vobjs (DB_SET *set)
 
static int cursor_fixup_set_vobjs (DB_VALUE *value)
 
static int cursor_fixup_vobjs (DB_VALUE *val)
 
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)
 
static int cursor_get_tuple_value_from_list (CURSOR_ID *c_id, int index, DB_VALUE *value, char *tuple)
 
static int cursor_get_first_tuple_value (char *tuple, QFILE_TUPLE_VALUE_TYPE_LIST *type_list, DB_VALUE *value, bool copy)
 
static char * cursor_peek_tuple (CURSOR_ID *cursor_id)
 
static int cursor_get_list_file_page (CURSOR_ID *cursor_id, VPID *vpid)
 
static OIDcursor_get_oid_from_vobj (OID *current_oid_p, int length)
 
static OIDcursor_get_oid_from_tuple (char *tuple_p, DB_TYPE type)
 
static int cursor_allocate_tuple_area (CURSOR_ID *cursor_id_p, int tuple_length)
 
static int cursor_construct_tuple_from_overflow_pages (CURSOR_ID *cursor_id_p, VPID *vpid_p)
 
static bool cursor_has_first_hidden_oid (CURSOR_ID *cursor_id_p)
 
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)
 
static int cursor_prefetch_first_hidden_oid (CURSOR_ID *cursor_id_p)
 
static int cursor_prefetch_column_oids (CURSOR_ID *cursor_id_p)
 
static int cursor_point_current_tuple (CURSOR_ID *cursor_id_p, int position, int offset)
 
static int cursor_buffer_last_page (CURSOR_ID *cursor_id_p, VPID *vpid_p)
 
static void cursor_allocate_oid_buffer (CURSOR_ID *cursor_id_p)
 
int cursor_copy_list_id (QFILE_LIST_ID *dest_list_id_p, const QFILE_LIST_ID *src_list_id_p)
 
int cursor_copy_vobj_to_dbvalue (struct or_buf *buffer_p, DB_VALUE *value_p)
 
int cursor_fetch_page_having_tuple (CURSOR_ID *cursor_id_p, VPID *vpid_p, int position, int offset)
 
bool cursor_open (CURSOR_ID *cursor_id_p, QFILE_LIST_ID *list_id_p, bool updatable, bool is_oid_included)
 
DB_FETCH_MODE cursor_set_prefetch_lock_mode (CURSOR_ID *cursor_id_p, DB_FETCH_MODE mode)
 
bool cursor_set_copy_tuple_value (CURSOR_ID *cursor_id_p, bool is_copy)
 
int cursor_set_oid_columns (CURSOR_ID *cursor_id_p, int *oid_col_no_p, int oid_col_no_cnt)
 
void cursor_free (CURSOR_ID *cursor_id_p)
 
void cursor_close (CURSOR_ID *cursor_id_p)
 
int cursor_get_current_oid (CURSOR_ID *cursor_id_p, DB_VALUE *value_p)
 
int cursor_next_tuple (CURSOR_ID *cursor_id_p)
 
int cursor_prev_tuple (CURSOR_ID *cursor_id_p)
 
int cursor_first_tuple (CURSOR_ID *cursor_id_p)
 
int cursor_last_tuple (CURSOR_ID *cursor_id_p)
 
int cursor_get_tuple_value (CURSOR_ID *cursor_id_p, int index, DB_VALUE *value_p)
 
int cursor_get_tuple_value_list (CURSOR_ID *cursor_id_p, int size, DB_VALUE *value_list_p)
 

Macro Definition Documentation

#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().

Enumeration Type Documentation

anonymous enum
Enumerator
FIRST_TPL 
LAST_TPL 

Definition at line 50 of file cursor.c.

Function Documentation

static void cursor_allocate_oid_buffer ( CURSOR_ID cursor_id_p)
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().

Here is the caller graph for this function:

static int cursor_allocate_tuple_area ( CURSOR_ID cursor_id_p,
int  tuple_length 
)
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().

Here is the caller graph for this function:

static int cursor_buffer_last_page ( CURSOR_ID cursor_id_p,
VPID vpid_p 
)
static

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().

Here is the caller graph for this function:

int cursor_copy_vobj_to_dbvalue ( struct or_buf buffer_p,
DB_VALUE value_p 
)
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 
)
static
int cursor_get_current_oid ( CURSOR_ID cursor_id_p,
DB_VALUE value_p 
)
static int cursor_get_first_tuple_value ( char *  tuple,
QFILE_TUPLE_VALUE_TYPE_LIST type_list,
DB_VALUE value,
bool  copy 
)
static
static OID * cursor_get_oid_from_tuple ( char *  tuple_p,
DB_TYPE  type 
)
static

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().

Here is the caller graph for this function:

static OID * cursor_get_oid_from_vobj ( OID current_oid_p,
int  length 
)
static

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().

Here is the caller graph for this function:

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 
)
static
static bool cursor_has_first_hidden_oid ( CURSOR_ID cursor_id_p)
static
static bool cursor_has_set_vobjs ( DB_SET set)
static

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().

Here is the caller graph for this function:

static void cursor_initialize_current_tuple_value_position ( CURSOR_ID cursor_id_p)
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().

Here is the caller graph for this function:

bool cursor_open ( CURSOR_ID cursor_id_p,
QFILE_LIST_ID list_id_p,
bool  updatable,
bool  is_oid_included 
)
static char * cursor_peek_tuple ( CURSOR_ID cursor_id)
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().

Here is the caller graph for this function:

static int cursor_point_current_tuple ( CURSOR_ID cursor_id_p,
int  position,
int  offset 
)
static
bool cursor_set_copy_tuple_value ( CURSOR_ID cursor_id_p,
bool  is_copy 
)

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().

Here is the caller graph for this function:

int cursor_set_oid_columns ( CURSOR_ID cursor_id_p,
int *  oid_col_no_p,
int  oid_col_no_cnt 
)
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().

Here is the caller graph for this function: