60 #define MIGRATION_CHUNK 4096 72 static int bfmt_print (
int bfmt,
const DB_VALUE * the_db_bit,
char *
string,
int max_size);
73 static const char *
strnchr (
const char *str,
char ch,
int nbytes);
149 for (i = 0; i < obj->
count; i++)
186 for (a = class_->
fixed_count; a < class_->att_count; a++)
190 for (i = 0; i < obj->
count; i++)
192 if (obj->
atts[i] == att)
250 int a, offset, len,
i;
261 for (a = class_->
fixed_count; a < class_->att_count; a++)
265 for (i = 0; i < obj->
count; i++)
267 if (obj->
atts[i] == att)
325 bits = (
char *) malloc (bsize);
332 memset (bits, 0, bsize);
344 for (i = 0; i < obj->
count && obj->
atts[
i] != att; i++);
380 pad = (int) (buf->
ptr - start);
381 if (pad < obj->class_->fixed_size)
408 for (i = 0; i < obj->
count && obj->
atts[
i] != att; i++);
485 nbytes = vsnprintf (tout->
ptr, size, fmt, ap);
496 memcpy (tout->
ptr, buf, buflen);
497 *(tout->
ptr + buflen) =
'\0';
500 tout->
count += nbytes;
536 bool has_index =
false;
537 unsigned int repid_bits;
538 int expected_disk_size;
548 record->
length = -expected_disk_size;
554 status = setjmp (buf->
env);
602 record->
length = -expected_disk_size;
607 *index_flag = has_index;
627 int i, j, offset, offset2, pad;
644 vars[
i] = offset2 - offset;
671 att->type->data_readval (buf, &obj->
values[i], att->
domain, -1,
true,
NULL, 0);
676 pad = (int) (buf->
ptr - start);
691 for (i = class_->
fixed_count, j = 0; i < class_->att_count && j < class_->variable_count;
694 att->type->data_readval (buf, &obj->
values[i], att->
domain, vars[j],
true,
NULL, 0);
745 int i, offset, offset2, total, bytes, att_index, padded_size, fixed_size;
771 vars[
i] = offset2 - offset;
802 if (attmap[i] ==
NULL)
814 fixed_size = (int) (buf->
ptr - start);
834 for (i = 0; i < oldrep->
fixed_count && rat !=
NULL; i++, rat = rat->next)
836 if (attmap[i] !=
NULL)
859 if (attmap[att_index] ==
NULL)
880 if (rat->attid == att->
id)
935 unsigned int repid_bits;
949 for (i = 0; i < obj->
count; i++)
965 status = setjmp (buf->
env);
1002 if (repid == class_->
repid)
1008 get_desc_old (buf, class_, repid, obj, bound_bit_flag, offset_size);
1036 for (i = 0; i < len; i++)
1066 for (i = 0; i < len; i++)
1100 #define MAX_DISPLAY_COLUMN 70 1101 #define DBL_MAX_DIGITS ((int)ceil(DBL_MAX_EXP * log10(FLT_RADIX))) 1103 #define BITS_IN_BYTE 8 1104 #define HEX_IN_BYTE 2 1105 #define BITS_IN_HEX 4 1106 #define BYTE_COUNT(bit_cnt) (((bit_cnt)+BITS_IN_BYTE-1)/BITS_IN_BYTE) 1107 #define BYTE_COUNT_HEX(bit_cnt) (((bit_cnt)+BITS_IN_HEX-1)/BITS_IN_HEX) 1116 int string_index = 0;
1119 const char *bstring;
1121 static char digits[16] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
1122 '8',
'9',
'a',
'b',
'c',
'd',
'e',
'f' 1131 if (length + 1 > max_size)
1137 for (byte_index = 0; byte_index <
BYTE_COUNT (length); byte_index++)
1139 for (bit_index = 7; bit_index >= 0 && string_index < length; bit_index--)
1141 *
string = digits[((bstring[byte_index] >> bit_index) & 0x1)];
1157 for (byte_index = 0; byte_index <
BYTE_COUNT (length); byte_index++)
1159 *
string = digits[((bstring[byte_index] >>
BITS_IN_HEX) & 0x0f)];
1164 *
string = digits[((bstring[byte_index] & 0x0f))];
1190 for (; nbytes; str++, nbytes--)
1215 const char *
p, *end;
1216 int partial_len, write_len, left_nbytes;
1217 const char *internal_quote_p;
1223 internal_quote_p =
strnchr (str,
'\'', len);
1224 for (p = str, end = str + len, partial_len = len; p < end; p += write_len, partial_len -= write_len)
1226 write_len = MIN (partial_len, left_nbytes > 0 ? left_nbytes : max_token_len);
1227 if (internal_quote_p ==
NULL || (p + write_len <= internal_quote_p))
1231 if (p + write_len < end)
1239 left_nbytes = write_len;
1240 write_len =
CAST_STRLEN (internal_quote_p - p + 1);
1242 left_nbytes -= (write_len + 1);
1248 (tout, (left_nbytes <= 0) ?
"'\'+\n \'" :
"'", (left_nbytes <= 0) ? 6 : 1,
NULL));
1250 internal_quote_p =
strnchr (p + write_len,
'\'', partial_len - write_len);
1265 #define INTERNAL_BUFFER_SIZE (400) 1305 static const char itoa_digit[] =
"0123456789abcdefghijklmnopqrstuvwxyz";
1310 if (base < 2 || base > 35)
1316 is_negative = (value < 0) ?
true :
false;
1325 quotient = value / base;
1326 remainder = value % base;
1327 *wstr++ = itoa_digit[(remainder >= 0) ? remainder : -remainder];
1329 while ((value = quotient) != 0);
1342 tout->
ptr += nbytes;
1343 tout->
count += nbytes;
1365 const char *str_ptr =
NULL;
1366 char *json_body =
NULL;
1415 if ((pos < tout->ptr && !strchr (pos,
'.')) || (pos > tout->
ptr && !strchr (tout->
buffer,
'.')))
1492 len = (int)
strlen (str_ptr);
1510 ptr = (
char *) malloc (max_size);
1682 int i, num_ignore_error_list;
1683 int set_count = 0, errcode;
1695 memset (rdbuf, 0,
sizeof (rdbuf));
1696 while (feof (ef) == 0)
1698 if (fgets (rdbuf, 30, ef) ==
NULL)
1702 if (rdbuf[0] ==
'#')
1706 if (rdbuf[0] !=
'-' && rdbuf[0] !=
'+')
1710 if (strncmp (rdbuf,
"+DEFAULT", 8) == 0)
1716 errcode = atoi (&rdbuf[1]);
1721 if (rdbuf[0] ==
'-')
1734 for (i = 1, num_ignore_error_list = 0; i < -
ER_LAST_ERROR; i++)
1738 ignore_error_list[num_ignore_error_list] = -
i;
1739 num_ignore_error_list++;
1743 if (num_ignore_error_list > 0)
1773 erridx = (errcode < 0) ? -errcode : errcode;
SM_REPRESENTATION * classobj_find_representation(SM_CLASS *class_, int id)
#define OR_SET_VAR_OFFSET_SIZE(val, offset_size)
DB_C_FLOAT db_get_float(const DB_VALUE *value)
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
static void default_clear_err_filter(void)
int tp_domain_disk_size(TP_DOMAIN *domain)
static int print_quoted_str(TEXT_OUTPUT *tout, const char *str, int len, int max_token_len)
void desc_value_print(print_output &output_ctx, DB_VALUE *value)
int db_value_put_null(DB_VALUE *value)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
int pr_data_writeval_disk_size(DB_VALUE *value)
int db_timestamptz_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime, const TZ_ID *tz_id)
void or_abort(OR_BUF *buf)
static int bfmt_print(int bfmt, const DB_VALUE *the_db_bit, char *string, int max_size)
static void begin(char *test_name)
DB_CONST_C_BIT db_get_bit(const DB_VALUE *value, int *length)
static bool filter_ignore_init
int db_date_to_string(char *buf, int bufsize, DB_DATE *date)
int db_get_int(const DB_VALUE *value)
int text_print(TEXT_OUTPUT *tout, const char *buf, int buflen, char const *fmt,...)
DB_C_DOUBLE db_get_double(const DB_VALUE *value)
#define OR_MVCC_REPID_MASK
static const char * strnchr(const char *str, char ch, int nbytes)
int desc_obj_to_disk(DESC_OBJ *obj, RECDES *record, bool *index_flag)
SM_ATTRIBUTE * attributes
DESC_OBJ * make_desc_obj(SM_CLASS *class_)
#define OR_MVCC_FLAG_VALID_INSID
char * db_get_json_raw_body(const DB_VALUE *value)
static int fprint_special_set(TEXT_OUTPUT *tout, DB_SET *set)
int db_timestampltz_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime)
SM_DEFAULT_VALUE default_value
#define OR_MVCC_FLAG_VALID_DELID
struct sm_component * next
DB_DATETIMETZ * db_get_datetimetz(const DB_VALUE *value)
static void put_attributes(OR_BUF *buf, DESC_OBJ *obj)
#define OR_MVCC_FLAG_SHIFT_BITS
bool classobj_class_has_indexes(SM_CLASS *class_)
#define OR_BOUND_BIT_BYTES(count)
#define ER_TF_BUFFER_UNDERFLOW
#define PTR_ALIGN(addr, boundary)
int set_size(DB_COLLECTION *set)
static int itoa_print(TEXT_OUTPUT *tout, DB_BIGINT value, int base)
static SM_ATTRIBUTE * find_current_attribute(SM_CLASS *class_, int id)
static char migration_buffer[MIGRATION_CHUNK]
#define OR_MVCC_MAX_HEADER_SIZE
int db_datetimetz_to_string(char *buf, int bufsize, DB_DATETIME *dt, const TZ_ID *tz_id)
DB_TIMESTAMPTZ * db_get_timestamptz(const DB_VALUE *value)
int db_timestamp_to_string(char *buf, int bufsize, DB_TIMESTAMP *utime)
int er_get_severity(void)
DB_MONETARY * db_get_monetary(const DB_VALUE *value)
static void print_set(print_output &output_ctx, DB_SET *set)
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,...)
#define ER_BO_NOTIFY_AUTO_VOLEXT
static int fprint_special_strings(TEXT_OUTPUT *tout, DB_VALUE *value)
const char * sm_ch_name(const MOBJ clobj)
static void itoa_strreverse(char *begin, char *end)
#define OR_MVCC_FLAG_VALID_PREV_VERSION
#define OR_MVCC_FLAG_MASK
#define OR_ENABLE_BOUND_BIT(bitptr, element)
int desc_disk_to_obj(MOP classop, SM_CLASS *class_, RECDES *record, DESC_OBJ *obj)
#define CHECK_EXIT_ERROR(e)
static void get_desc_old(OR_BUF *buf, SM_CLASS *class_, int repid, DESC_OBJ *obj, int bound_bit_flag, int offset_size)
int or_mvcc_get_repid_and_flags(OR_BUF *buf, int *error)
#define ER_OUT_OF_VIRTUAL_MEMORY
void db_print_value(print_output &output_ctx, const db_value *value)
int or_put_int(OR_BUF *buf, int num)
#define BYTE_COUNT(bit_cnt)
int or_put_bigint(OR_BUF *buf, DB_BIGINT num)
int or_overflow(OR_BUF *buf)
#define OR_MVCC_PREV_VERSION_LSA_SIZE
static void put_varinfo(OR_BUF *buf, DESC_OBJ *obj, int offset_size)
#define OR_MVCC_INSERT_HEADER_SIZE
static void get_desc_current(OR_BUF *buf, SM_CLASS *class_, DESC_OBJ *obj, int bound_bit_flag, int offset_size)
int or_put_offset_internal(OR_BUF *buf, int num, int offset_size)
unsigned short db_get_enum_short(const DB_VALUE *value)
struct sm_repr_attribute * next
#define DB_ATT_ALIGN(offset)
#define ER_LOG_MAX_ARCHIVES_HAS_BEEN_EXCEEDED
#define CHECK_PRINT_ERROR(print_fnc)
#define db_private_free(thrd, ptr)
void or_init(OR_BUF *buf, char *data, int length)
int set_get_element(DB_COLLECTION *set, int index, DB_VALUE *value)
#define BIG_VAR_OFFSET_SIZE
int desc_value_special_fprint(TEXT_OUTPUT *tout, DB_VALUE *value)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int pr_clear_value(DB_VALUE *value)
DB_BIGINT db_get_bigint(const DB_VALUE *value)
int db_time_to_string(char *buf, int bufsize, DB_TIME *time)
int db_datetime_to_string(char *buf, int bufsize, DB_DATETIME *datetime)
int er_filter_errid(bool ignore_warning)
int or_get_offset_internal(OR_BUF *buf, int *error, int offset_size)
static void error(const char *msg)
#define INTERNAL_BUFFER_SIZE
SM_REPR_ATTRIBUTE * attributes
int pr_Inhibit_oid_promotion
char * numeric_db_value_print(const DB_VALUE *val, char *buf)
#define ER_DISK_ALMOST_OUT_OF_SPACE
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
#define free_and_init(ptr)
DB_DATE * db_get_date(const DB_VALUE *value)
#define OR_VAR_TABLE_SIZE_INTERNAL(vars, offset_size)
DB_TIMESTAMP * db_get_timestamp(const DB_VALUE *value)
int db_get_string_size(const DB_VALUE *value)
DB_C_SHORT db_get_short(const DB_VALUE *value)
int or_put_data(OR_BUF *buf, const char *data, int length)
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
char * msgcat_message(int cat_id, int set_id, int msg_id)
#define DB_IS_NULL(value)
#define OR_GET_OFFSET_SIZE(ptr)
void get_ignored_errors(std::vector< int > &vec)
int db_get_error(const DB_VALUE *value)
DB_DATETIME * db_get_datetime(const DB_VALUE *value)
int db_value_clear(DB_VALUE *value)
void desc_free(DESC_OBJ *obj)
int db_get_string_length(const DB_VALUE *value)
#define MAX_DISPLAY_COLUMN
void pr_data_writeval(struct or_buf *buf, DB_VALUE *value)
static int object_disk_size(DESC_OBJ *obj, int *offset_size_ptr)
#define OR_BOUND_BIT_FLAG
DB_TIME * db_get_time(const DB_VALUE *value)
int or_pad(OR_BUF *buf, int length)
DB_C_POINTER db_get_pointer(const DB_VALUE *value)
#define BYTE_COUNT_HEX(bit_cnt)
int ws_set_ignore_error_list_for_mflush(int error_count, int *error_list)
#define ER_DISK_TEMP_LAST_ALMOST_OUT_OF_SPACE
#define ER_TF_INVALID_REPRESENTATION
static bool filter_ignore_errors[-ER_LAST_ERROR]
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
int or_advance(OR_BUF *buf, int offset)
int text_print_flush(TEXT_OUTPUT *tout)
#define OR_GET_BOUND_BIT(bitptr, element)
int db_datetimeltz_to_string(char *buf, int bufsize, DB_DATETIME *dt)
char * intl_get_money_esc_ISO_symbol(const DB_CURRENCY currency)
static void init_load_err_filter(void)
int er_filter_fileset(FILE *ef)
#define MSGCAT_CATALOG_UTILS