46 #define DB_OID_INCLUDED(r) ((r)->oid_included == true) 47 #define DB_INVALID_INDEX(i,cnt) ((i) < 0 || (i) >= (cnt)) 48 #define DB_INVALID_RESTYPE(t) \ 51 (t) != T_OBJFETCH && \ 54 #define PLAN_BUF_INITIAL_LENGTH (1024) 208 for (column = columns; column !=
NULL; column = column->
next)
232 *count = columns_cnt;
262 for (column = columns; column !=
NULL; column = column->
next)
315 for (
i = 0;
i < size;
i++)
377 current->
next = column;
378 current = current->
next;
436 int packed_size = 0,
i = 0;
437 int query_len = 0, columns_cnt = 0;
481 ptr = (
char *) malloc (packed_size);
576 unsigned int i = 0, var_count;
586 for (i = 0; i < var_count; i++)
598 for (i = 0; i < var_count; i++)
663 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 671 db_free_colname_list (
char **colname_list,
int cnt)
675 if (colname_list ==
NULL)
680 for (i = 0; i < cnt; i++)
682 if (colname_list[i] !=
NULL)
698 db_free_domain_list (
SM_DOMAIN ** domain_list,
int cnt)
702 if (domain_list ==
NULL)
707 for (i = 0; i < cnt; i++)
709 if (domain_list[i] !=
NULL)
731 #if defined (ENABLE_UNUSED_FUNCTION) 741 #if defined(QP_DEBUG) 744 (void) fprintf (stdout,
"*WARNING*: Misconnection between the query" "result structure and query table.\n");
779 #if defined (ENABLE_UNUSED_FUNCTION) 835 for (k = 0, p = q, p->
next =
NULL; k < cnt - 1; k++, p = p->next, p->
next =
NULL)
874 #if defined(QP_DEBUG) 933 if (*qres_ptr ==
NULL)
970 for (k = 0; k < col_cnt; k++)
974 #if defined (ENABLE_UNUSED_FUNCTION) 989 for (k = 0; k < col_cnt; k++)
1042 #if defined (ENABLE_UNUSED_FUNCTION) 1056 #if defined(WINDOWS) || defined (CUBRID_DEBUG) 1071 #if defined(QP_DEBUG) 1079 fprintf (stdout,
"\nQuery Result Structure: \n");
1080 fprintf (stdout,
"Type: %s \n",
1083 fprintf (stdout,
"Status: %s \n",
1085 fprintf (stdout,
"Column Count: %d \n", r->
col_cnt);
1086 fprintf (stdout,
"Oid_Included: %s \n", (r->
oid_included) ?
"Yes" :
"No");
1087 fprintf (stdout,
"\n");
1090 fprintf (stdout,
"Query_id: %lld \n", (
long long) r->
res.
s.
query_id);
1091 fprintf (stdout,
"Stmt_id: %d \n", r->
res.
s.
stmt_id);
1097 fprintf (stdout,
"Tuple Cnt: %d \n", r->
res.
g.
n_tuple);
1099 fprintf (stdout,
"\n");
1103 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 1114 db_cp_colname_list (
char **colname_list,
int cnt)
1116 char **newname_list;
1120 if (colname_list ==
NULL)
1125 newname_list = (
char **) malloc (cnt *
DB_SIZEOF (
char *));
1126 if (newname_list ==
NULL)
1132 for (i = 0; i < cnt; i++)
1134 newname_list[
i] =
NULL;
1137 for (i = 0; i < cnt; i++)
1139 size =
strlen (colname_list[i]) + 1;
1140 newname_list[
i] = (
char *) malloc (size);
1141 if (newname_list[i] ==
NULL)
1144 db_free_colname_list (newname_list, cnt);
1147 memcpy (newname_list[i], colname_list[i], size);
1150 return newname_list;
1164 db_cp_domain_list (
SM_DOMAIN ** domain_list,
int cnt)
1169 if (domain_list ==
NULL)
1175 if (newdomain_list ==
NULL)
1181 for (i = 0; i < cnt; i++)
1183 newdomain_list[
i] =
NULL;
1186 for (i = 0; i < cnt; i++)
1189 if (newdomain_list[i] ==
NULL)
1191 db_free_domain_list (newdomain_list, cnt);
1196 return newdomain_list;
1216 if (*qres_ptr ==
NULL)
1220 if (((*qres_ptr)->type ==
T_SELECT && !(*qres_ptr)->res.s.holdable) || end_holdable)
1268 dest->
name = (
char *) malloc (size);
1274 memcpy ((
char *) dest->
name, src->
name, size);
1280 dest->
attr_name = (
char *) malloc (size);
1292 dest->
spec_name = (
char *) malloc (size);
1336 for (cnt = 0, ptr1 = query_type; ptr1; ptr1 = ptr1->
next)
1350 for (ptr1 = query_type, ptr2 = q; ptr1; ptr1 = ptr1->
next)
1368 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 1387 db_get_query_type (
DB_TYPE * type_list,
int *size_list,
char **colname_list,
char **attrname_list,
1403 if (type_list ==
NULL || size_list ==
NULL || cnt <= 0)
1408 type_cnt = (oid_included) ? (cnt - 1) : cnt;
1418 colnamep = colname_list;
1419 attrnamep = attrname_list;
1420 domainp = domain_list;
1421 src_domainp = src_domain_list;
1423 for (k = 0; k < cnt; k++)
1426 if (!(oid_included && k == 0))
1429 type_ptr->
size = *sizep;
1440 size =
strlen (*colnamep) + 1;
1441 type_ptr->
name = (
char *) malloc (size);
1448 memcpy ((
char *) type_ptr->
name, *colnamep, size);
1454 size =
strlen (*attrnamep) + 1;
1455 type_ptr->
attr_name = (
char *) malloc (size);
1462 memcpy ((
char *) type_ptr->
attr_name, *attrnamep, size);
1469 if (src_domain_list)
1474 type_ptr = type_ptr->
next;
1490 if (src_domain_list)
1519 if (session ==
NULL)
1564 return (error < 0 ? error :
NO_ERROR);
1580 return query_type->
next;
1612 return ((
char *) query_type->
name);
1625 return ((
char *) query_type->
attr_name);
1638 return ((
char *) query_type->
spec_name);
1664 return query_type->
domain;
1707 return query_type->
size;
1725 if (query_type ==
NULL)
1747 if (src_domain ==
NULL)
1749 return (
const char *)
NULL;
1814 return (error < 0 ? error :
NO_ERROR);
1861 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 1874 #if defined(CUBRID_DEBUG) 1875 fprintf (stdout,
"db_query_execute_immediate is a deprecated function.\n");
1876 fprintf (stdout,
"use the equivalent function db_execute.\n");
1897 db_get_objfetch_query_result (
DB_VALUE * val_list,
int val_cnt,
int *size_list,
char **colname_list,
1898 char **attrname_list)
1932 for (k = 0, typep = r->
query_type, valp = val_list, sizep = size_list, namep = colname_list, attr_namep =
1933 attrname_list; k < val_cnt; k++, typep = typep->next, valp++, sizep++)
1936 typep->
size = *sizep;
1943 if (colname_list !=
NULL)
1946 str_size =
strlen (*namep) + 1;
1947 typep->
name = (
char *) malloc (str_size);
1954 memcpy ((
char *) typep->
name, *namep, str_size);
1957 if (attrname_list !=
NULL)
1962 str_size =
strlen (*attr_namep) + 1;
1963 typep->
attr_name = (
char *) malloc (str_size);
1970 memcpy ((
char *) typep->
attr_name, *attr_namep, str_size);
1977 for (k = 0, ovalp = r->
res.
o.
valptr_list, valp = val_list; k < r->col_cnt; k++, ovalp++, valp++)
1980 if ((*ovalp) ==
NULL)
2070 if (*type_list ==
NULL)
2102 switch (result->
type)
2132 #if defined (ENABLE_UNUSED_FUNCTION) 2211 switch (result->
type)
2247 #if defined (ENABLE_UNUSED_FUNCTION) 2322 switch (result->
type)
2342 #if defined (ENABLE_UNUSED_FUNCTION) 2387 switch (result->
type)
2407 #if defined (ENABLE_UNUSED_FUNCTION) 2458 int rel1, rel2, rel3, rel_n;
2459 int curr_tplno, tpl_cnt;
2472 switch (result->
type)
2491 rel2 = offset - curr_tplno;
2492 rel3 = offset - (tpl_cnt - 1);
2498 rel1 = curr_tplno + offset;
2500 rel3 = (curr_tplno + offset) - (tpl_cnt - 1);
2506 rel1 = (tpl_cnt - 1) + offset;
2507 rel2 = (tpl_cnt - 1) + offset - curr_tplno;
2521 if (abs (rel1) < abs (rel2) && abs (rel1) < abs (rel3))
2544 else if (abs (rel3) < abs (rel2))
2639 else if (offset > 0)
2655 else if (offset < 0)
2669 #if defined (ENABLE_UNUSED_FUNCTION) 2672 int col_cnt, tpl_idx, n_tuple,
index = 0;
2687 index = offset * col_cnt;
2690 index = tpl_idx + (offset * col_cnt);
2693 index = ((n_tuple - 1) + offset) * col_cnt;
2702 else if (index >= (n_tuple * col_cnt))
2758 switch (result->
type)
2776 #if defined (ENABLE_UNUSED_FUNCTION) 2810 switch (result->
type)
2836 #if defined (ENABLE_UNUSED_FUNCTION) 2877 #if defined (ENABLE_UNUSED_FUNCTION) 2891 switch (result->
type)
2925 #if defined (ENABLE_UNUSED_FUNCTION) 2974 switch (result->
type)
2980 for (ind = 0; typep; ind++, typep = typep ? typep->
next :
NULL)
2986 else if (typep->original_name)
3041 switch (result->
type)
3060 for (k = 0, valp = value_list; k < size; k++, valp++)
3101 switch (result->
type)
3112 #if defined (ENABLE_UNUSED_FUNCTION) 3153 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 3226 #if defined(WINDOWS) || defined (ENABLE_UNUSED_FUNCTION) 3260 for (k = 0, typep = result->
query_type; k < index && typep; k++, typep = typep->next)
3300 for (k = 0, typep = result->
query_type; k < index; k++, typep = typep->next)
3305 return typep ? typep->
size : -1;
3309 #if defined(WINDOWS) || defined (CUBRID_DEBUG) 3324 fprintf (stdout,
"There is no result.\n\n");
3328 switch (result->
type)
3339 (void) fprintf (stdout,
"Invalid query result structure type: %d.\n", result->
type);
3369 notify_server =
false;
3373 notify_server =
true;
3399 switch (result->
type)
3411 #if defined (ENABLE_UNUSED_FUNCTION) 3493 if (notify_server && error ==
NO_ERROR)
3550 if (filename !=
NULL)
3569 int null_padded_length = 0;
3580 null_padded_length = length + 1;
#define ER_QPROC_INVALID_RESTYPE
#define CHECK_1ARG_MINUSONE(obj)
int db_unpack_prepare_info(DB_PREPARE_INFO *info, char *buffer)
COL_VISIBLE_TYPE visible_type
int db_execute_statement_local(DB_SESSION *session, int stmt, DB_QUERY_RESULT **result)
static char * or_unpack_query_format(char *buf, DB_QUERY_TYPE **q)
#define ER_QPROC_INVALID_TPLVAL_INDEX
DB_QUERY_RESULT * db_alloc_query_result(DB_RESULT_TYPE r_type, int col_cnt)
void db_free_query_result(DB_QUERY_RESULT *r)
int cursor_get_tuple_value(CURSOR_ID *cursor_id_p, int index, DB_VALUE *value_p)
struct alloc_resource alloc_res
static int or_packed_query_format_size(const DB_QUERY_TYPE *q, int *count)
#define CACHE_TIME_RESET(T)
int db_query_prefetch_columns(DB_QUERY_RESULT *result, int *columns, int col_count)
const char * db_get_class_name(DB_OBJECT *class_)
void db_init_query_result(DB_QUERY_RESULT *r, DB_RESULT_TYPE r_type)
int db_query_seek_tuple(DB_QUERY_RESULT *result, int offset, int seek_mode)
#define CHECK_2ARGS_ERROR(obj1, obj2)
static void free_query_result(DB_QUERY_RESULT *q_res)
int db_query_execute(const char *CSQL_query, DB_QUERY_RESULT **result, DB_QUERY_ERROR *query_error)
static DB_QUERY_TYPE * db_cp_query_type_helper(DB_QUERY_TYPE *src, DB_QUERY_TYPE *dest)
int qmgr_end_query(QUERY_ID query_id)
DB_QUERY_RESULT * db_get_db_value_query_result(DB_VALUE *val)
char * or_unpack_string_alloc(char *ptr, char **string)
char * or_pack_db_value(char *buffer, DB_VALUE *var)
int cursor_next_tuple(CURSOR_ID *cursor_id_p)
int db_query_set_tplpos(DB_QUERY_RESULT *result, DB_QUERY_TPLPOS *tplpos)
char * or_pack_string(char *ptr, const char *string)
static int db_Execution_plan_length
int db_query_end(DB_QUERY_RESULT *result)
void db_free_execution_plan(void)
void db_query_format_free(DB_QUERY_TYPE *query_type)
bool tran_was_latest_query_ended(void)
static DB_QUERY_RESULT * allocate_query_result(void)
void db_query_free_tplpos(DB_QUERY_TPLPOS *tplpos)
int or_packed_domain_size(struct tp_domain *domain, int include_classoids)
int db_query_get_tuple_oid(DB_QUERY_RESULT *result, DB_VALUE *db_value)
int db_open_buffer_and_compile_first_statement(const char *CSQL_query, DB_QUERY_ERROR *query_error, int include_oid, DB_SESSION **session, int *stmt_no)
int cursor_fetch_page_having_tuple(CURSOR_ID *cursor_id_p, VPID *vpid_p, int position, int offset)
SM_DOMAIN * db_query_format_domain(DB_QUERY_TYPE *query_type)
int db_attribute_is_non_null(DB_ATTRIBUTE *attribute)
#define ER_OBJ_NO_CONNECT
DB_QUERY_TYPE * db_query_format_next(DB_QUERY_TYPE *query_type)
DB_QUERY_RESULT ** qres_list
char * db_query_format_name(DB_QUERY_TYPE *query_type)
#define DB_INVALID_RESTYPE(t)
int cursor_last_tuple(CURSOR_ID *cursor_id_p)
#define DB_CONNECTION_STATUS_CONNECTED
DB_ATTRIBUTE * db_get_attribute(DB_OBJECT *obj, const char *name)
TP_DOMAIN * tp_domain_resolve_default(DB_TYPE type)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
int db_query_prev_tuple(DB_QUERY_RESULT *result)
int db_query_get_cache_time(DB_QUERY_RESULT *result, CACHE_TIME *cache_time)
char * db_get_execution_plan(void)
int cursor_get_current_oid(CURSOR_ID *cursor_id_p, DB_VALUE *value_p)
int db_query_last_tuple(DB_QUERY_RESULT *result)
#define ER_QPROC_INVALID_CRSOPR
int or_packed_string_length(const char *string, int *strlen)
DB_QUERY_TYPE * query_type
int db_query_first_tuple(DB_QUERY_RESULT *result)
DB_QUERY_RESULT * free_qres_list
TP_DOMAIN ** host_var_expected_domains
#define ER_OUT_OF_VIRTUAL_MEMORY
int db_get_query_format(const char *CSQL_query, DB_QUERY_TYPE **result, DB_QUERY_ERROR *query_error)
#define OR_VALUE_ALIGNED_SIZE(value)
DB_VALUE_ARRAY host_variables
#define CHECK_1ARG_ERROR(obj)
int db_value_free(DB_VALUE *value)
char * query_Plan_dump_filename
#define CHECK_1ARG_NULL(obj)
void db_init_prepare_info(DB_PREPARE_INFO *info)
int cursor_set_oid_columns(CURSOR_ID *cursor_id_p, int *oid_col_no_p, int oid_col_no_cnt)
void db_clear_client_query_result(int notify_server, bool end_holdable)
int db_query_get_tuple_value_by_name(DB_QUERY_RESULT *result, char *column_name, DB_VALUE *value)
bool db_is_client_cache_reusable(DB_QUERY_RESULT *result)
DB_VALUE * db_value_copy(DB_VALUE *value)
#define CHECK_3ARGS_ERROR(obj1, obj2, obj3)
struct db_query_type * next
void db_value_print(const DB_VALUE *value)
#define ER_QPROC_UNKNOWN_CRSPOS
int db_query_plan_dump_file(char *filename)
int db_execute(const char *CSQL_query, DB_QUERY_RESULT **result, DB_QUERY_ERROR *query_error)
void db_close_session_local(DB_SESSION *session)
#define DB_OID_INCLUDED(r)
static const int QP_QRES_LIST_INIT_CNT
SM_DOMAIN * db_query_format_src_domain(DB_QUERY_TYPE *query_type)
#define ER_QPROC_OPR_ON_CLOSED_QRES
TP_DOMAIN * tp_domain_cache(TP_DOMAIN *transient)
int db_value_clear_array(DB_VALUE_ARRAY *value_array)
bool cursor_set_copy_tuple_value(CURSOR_ID *cursor_id_p, bool is_copy)
char * or_unpack_int(char *ptr, int *number)
void db_set_execution_plan(char *plan, int length)
DB_QUERY_TYPE * db_alloc_query_format(int cnt)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int db_query_get_tuple_valuelist(DB_QUERY_RESULT *result, int size, DB_VALUE *value_list)
void db_free_query_format(DB_QUERY_TYPE *q)
#define CHECK_1ARG_RETURN_EXPR(obj, expr)
DB_QUERY_TYPE * db_cp_query_type(DB_QUERY_TYPE *query_type, int copy_only_user)
int db_query_column_count(DB_QUERY_RESULT *result)
#define ER_OBJ_INVALID_ARGUMENT
static void error(const char *msg)
char * db_query_format_spec_name(DB_QUERY_TYPE *query_type)
char * or_pack_int(char *ptr, int number)
#define TP_TYPE_HAS_COLLATION(typeid)
int db_query_next_tuple(DB_QUERY_RESULT *result)
int db_execute_with_values(const char *CSQL_query, DB_QUERY_RESULT **result, DB_QUERY_ERROR *query_error, int arg_count, DB_VALUE *vals)
#define CHECK_CONNECT_NULL()
const char * db_query_format_class_name(DB_QUERY_TYPE *query_type)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
int db_pack_prepare_info(const DB_PREPARE_INFO *info, char **buffer)
int db_query_format_size(DB_QUERY_TYPE *query_type)
static const float QP_QRES_LIST_INC_RATE
char * db_query_format_original_name(DB_QUERY_TYPE *query_type)
int db_query_format_is_non_null(DB_QUERY_TYPE *query_type)
#define free_and_init(ptr)
char * or_pack_string_with_length(char *ptr, const char *string, int length)
int db_push_values(DB_SESSION *session, int count, DB_VALUE *in_values)
int db_query_end_internal(DB_QUERY_RESULT *result, bool notify_server)
char * or_pack_domain(char *ptr, struct tp_domain *domain, int include_classoids, int is_null)
DB_COL_TYPE db_query_format_col_type(DB_QUERY_TYPE *query_type)
#define DB_CURSOR_SUCCESS
DB_QUERY_TPLPOS * db_query_get_tplpos(DB_QUERY_RESULT *result)
#define DB_INVALID_INDEX(i, cnt)
static struct @46 Qres_table
int db_get_query_result_format(DB_QUERY_RESULT *result, DB_QUERY_TYPE **type_list)
int db_query_set_copy_tplvalue(DB_QUERY_RESULT *result, int copy)
#define ER_QPROC_INVALID_COLNAME
int cursor_prev_tuple(CURSOR_ID *cursor_id_p)
void cursor_close(CURSOR_ID *cursor_id_p)
char * db_query_format_attr_name(DB_QUERY_TYPE *query_type)
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
#define PLAN_BUF_INITIAL_LENGTH
int db_compile_and_execute_queries_internal(const char *CSQL_query, void *result, DB_QUERY_ERROR *query_error, int include_oid, int execute, bool is_new_statement)
char * strdup(const char *str)
struct db_query_result * next
int db_value_clear(DB_VALUE *value)
int db_query_get_tuple_value(DB_QUERY_RESULT *result, int index, DB_VALUE *value)
struct db_object * class_mop
DB_TYPE db_query_format_type(DB_QUERY_TYPE *query_type)
static char * db_Execution_plan
char * or_unpack_domain(char *ptr, struct tp_domain **domain_ptr, int *is_null)
void sm_domain_free(SM_DOMAIN *ptr)
int db_execute_oid(const char *CSQL_query, DB_QUERY_RESULT **result, DB_QUERY_ERROR *query_error)
CUBRID_STMT_TYPE stmt_type
char * or_unpack_db_value(char *buffer, DB_VALUE *val)
void tp_domain_free(TP_DOMAIN *dom)
static char * or_pack_query_format(char *buf, const DB_QUERY_TYPE *q, const int count)
int cursor_get_tuple_value_list(CURSOR_ID *cursor_id_p, int size, DB_VALUE *value_list_p)
int db_query_tuple_count(DB_QUERY_RESULT *result)
#define CHECK_CONNECT_ERROR()
int ansisql_strcasecmp(const char *s, const char *t)
SM_DOMAIN * sm_domain_copy(SM_DOMAIN *ptr)
#define TP_DOMAIN_COLLATION_FLAG(dom)
union db_query_result::@47 res
int cursor_first_tuple(CURSOR_ID *cursor_id_p)