87 size_t * outlen,
bool * isnull);
155 if (index < 0 || index >= or->
nattrs)
159 if (arg ==
NULL || size <= 0)
169 case CI_RMETA_INFO_COL_LABEL:
171 *(
char *) arg =
'\0';
174 case CI_RMETA_INFO_COL_NAME:
177 const char *attr_name;
183 namelen =
strlen (attr_name) + 1;
188 strcpy ((
char *) arg, attr_name);
191 case CI_RMETA_INFO_COL_TYPE:
192 if (size <
sizeof (CI_TYPE))
206 case CI_RMETA_INFO_PRECISION:
207 if (size <
sizeof (
int))
221 case CI_RMETA_INFO_SCALE:
222 if (size <
sizeof (
int))
236 case CI_RMETA_INFO_TABLE_NAME:
238 const char *tbl_name;
244 if (tbl_name ==
NULL)
249 sz =
strlen (tbl_name) + 1;
254 strcpy ((
char *) arg, tbl_name);
257 case CI_RMETA_INFO_IS_AUTO_INCREMENT:
258 if (size <
sizeof (
int))
266 case CI_RMETA_INFO_IS_NULLABLE:
267 if (size <
sizeof (
int))
275 case CI_RMETA_INFO_IS_WRITABLE:
276 if (size <
sizeof (
int))
388 if (pos == CI_FETCH_POSITION_CURRENT || pos == CI_FETCH_POSITION_FIRST)
390 else if (pos == CI_FETCH_POSITION_LAST)
391 idx = or->
nattrs + offset;
487 if (index < 0 || index >= or->
nattrs)
491 res = or->
vt->
ifs->
get_value (or->
vt, index, type, addr, len, outlen, is_null);
508 size_t * outlen,
bool * isnull)
544 if (index < 0 || index >= or->
nattrs)
628 if (res_bind ==
NULL)
634 *rres_bind = res_bind;
662 for (i = 0; i < or->
nattrs; i++)
666 if (strcmp (name, attr_name) == 0)
929 *r =
OID_EQ (oid1, oid2) ? 0 :
OID_GT (oid1, oid2) ? 1 : -1;
1072 strncpy (name, tmp, size);
1077 strncpy (name,
"NULL", size);
1112 res =
db_send (obj,
"data_pos", &ret);
1137 res =
db_send (obj,
"data_size", &ret);
static void or_rm_bind_destroyf(BH_BIND *bind)
static int apif_last_pos(DB_OBJECT *obj, int *pos)
static int vt_api_init_domain(void *impl, int index, DB_VALUE *value)
static int res_api_fetch(API_RESULTSET *impl, int offset, CI_FETCH_POSITION pos)
#define OID_GT(oidp1, oidp2)
void(* destroy)(VALUE_BIND_TABLE *tbl)
const char * db_get_class_name(DB_OBJECT *class_)
int(* bind_graft)(BH_INTERFACE *ifs, BH_BIND *bind, BH_BIND *on_bind)
void hash_destroy(hash_table *ht, ht_destroyf dtor)
int db_domain_scale(const DB_DOMAIN *domain)
MOP ws_mop(const OID *oid, MOP class_mop)
void xoid2oid(CI_OID *xoid, OID *oid)
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
DB_OBJECT * db_object(DB_IDENTIFIER *oid)
static int res_api_tell(API_RESULTSET *impl, int *offset)
static int orp_ht_keyf(void *elem, void **rk)
static int res_api_delete_row(API_RESULTSET *impl)
int db_domain_precision(const DB_DOMAIN *domain)
int hash_lookup(hash_table *ht, void *key, void **relem)
int db_get_int(const DB_VALUE *value)
static int res_api_get_resultset_metadata(API_RESULTSET *impl, API_RESULTSET_META **rimpl)
static int rm_api_get_info(API_RESULTSET_META *impl, int index, CI_RMETA_INFO_TYPE type, void *arg, size_t size)
int(* get_value_by_name)(VALUE_BIND_TABLE *tbl, const char *name, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
static int res_api_get_value(API_RESULTSET *impl, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *is_null)
static int res_api_clear_updates(API_RESULTSET *impl)
static int orp_oid_get_classname(API_OBJECT_RESULTSET_POOL *pool, CI_OID *xoid, char *name, size_t size)
int(* reset)(VALUE_BIND_TABLE *tbl)
static int orp_ht_comparef(void *key1, void *key2, int *r)
static void or_rm_bind_destroy(OBJECT_RM_BIND *rm_bind)
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
int db_attribute_is_non_null(DB_ATTRIBUTE *attribute)
static void or_res_bind_destroyf(BH_BIND *bind)
int db_send(MOP obj, const char *name, DB_VALUE *returnval,...)
OBJECT_RES_BIND * res_bind
static API_RESULTSET_IFS RES_IFS_
#define OID_PSEUDO_KEY(oidp)
int(* oid_delete)(API_OBJECT_RESULTSET_POOL *pool, CI_OID *oid)
static int or_rm_bind_create(OBJECT_RESULTSET *or, OBJECT_RM_BIND **rrm_bind)
#define ER_INTERFACE_GENERIC
int db_type_to_type(DB_TYPE dt, CI_TYPE *xt)
static int or_create(OID *oid, BIND_HANDLE conn, BH_INTERFACE *bh_ifs, OBJECT_RESULTSET **ror)
static int or_res_bind_create(OBJECT_RESULTSET *or, OBJECT_RES_BIND **rres_bind)
int(* bind_to_handle)(BH_INTERFACE *ifs, BH_BIND *bind, BIND_HANDLE *bh)
static API_RESULTSET_META_IFS RM_IFS_
static int orp_api_get_object_resultset(API_OBJECT_RESULTSET_POOL *pool, CI_OID *oid, API_RESULTSET **rref)
static int vt_api_get_db_value(void *impl, int index, DB_VALUE *dbval)
int api_object_resultset_pool_create(BH_INTERFACE *ifs, BIND_HANDLE conn, API_OBJECT_RESULTSET_POOL **rpool)
int db_put(DB_OBJECT *obj, const char *name, DB_VALUE *value)
static int orp_oid_delete(API_OBJECT_RESULTSET_POOL *pool, CI_OID *oid)
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
#define OID_EQ(oidp1, oidp2)
#define TP_DOMAIN_TYPE(dom)
DB_OBJECT * db_get_class(MOP obj)
int db_drop(DB_OBJECT *obj)
int(* oid_get_classname)(API_OBJECT_RESULTSET_POOL *pool, CI_OID *oid, char *name, size_t size)
int db_attribute_is_auto_increment(DB_ATTRIBUTE *attribute)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
static int res_api_get_value_by_name(API_RESULTSET *impl, const char *name, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
DB_DOMAIN * db_attribute_domain(DB_ATTRIBUTE *attribute)
static int vt_api_get_index_by_name(void *impl, const char *name, int *ri)
static int orp_ht_hashf(void *key, unsigned int *rv)
VALUE_BIND_TABLE_IFS * ifs
static int vt_api_set_db_value(void *impl, int index, DB_VALUE *dbval)
static int res_api_update_value(API_RESULTSET *impl, int index, CI_TYPE type, void *addr, size_t len)
API_OBJECT_RESULTSET_POOL pool
int(* get_object_resultset)(API_OBJECT_RESULTSET_POOL *pool, CI_OID *oid, API_RESULTSET **rres)
int db_get(DB_OBJECT *object, const char *attpath, DB_VALUE *value)
int create_db_value_bind_table(int nvalue, void *impl, int auto_apply, BIND_HANDLE conn_handle, int(*get_index_by_name)(void *, const char *, int *ri), int(*get_db_value)(void *, int, DB_VALUE *), int(*set_db_value)(void *, int, DB_VALUE *), int(*init_domain)(void *, int, DB_VALUE *), VALUE_BIND_TABLE **rtable)
static int res_api_apply_update(API_RESULTSET *impl)
int(* get_value)(VALUE_BIND_TABLE *tbl, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
int(* set_value)(VALUE_BIND_TABLE *tbl, int index, CI_TYPE type, void *addr, size_t len)
static int apif_tell(DB_OBJECT *obj, int *pos)
void(* destroy)(API_OBJECT_RESULTSET_POOL *pool)
int(* apply_updates)(VALUE_BIND_TABLE *tbl)
int(* destroy_handle)(BH_INTERFACE *ifs, BIND_HANDLE bh)
int(* alloc_handle)(BH_INTERFACE *ifs, BH_BIND *bind, BIND_HANDLE *bh)
static int rm_api_get_count(API_RESULTSET_META *impl, int *count)
static void orp_api_destroy(API_OBJECT_RESULTSET_POOL *pool)
DB_ATTRIBUTE ** attr_index
#define ER_INTERFACE_INVALID_ARGUMENT
static void or_res_bind_destroy(OBJECT_RES_BIND *res_bind)
#define ER_INTERFACE_INVALID_HANDLE
static void or_destroy(OBJECT_RESULTSET *or)
int hash_new(int bucket_sz, ht_hashf hashf, ht_keyf keyf, ht_comparef comparef, hash_table **rht)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
#define ER_INTERFACE_NO_MORE_MEMORY
static void res_api_destroy(API_RESULTSET *impl)