49 #define MAX_LINE_LENGTH 1024 68 _time = time(
nullptr);
74 return sizeof(time_t);
77 void string(
char* dest,
const int len)
const {
78 #ifdef _POSIX_PTHREAD_SEMANTICS 79 ctime_r(&_time, dest);
80 #elif defined(SOLARIS2) 81 ctime_r(&_time, dest, len);
83 ctime_r(&_time, dest);
137 const char* _set_keydesc();
172 return (is_variable_length(_type));
187 return (_allow_null);
194 return (_set_keydesc());
200 const short size = 0,
201 const bool allow_null =
false);
204 void print_desc(ostream& os = cout);
247 : _pfield_desc(nullptr),
283 return (_pfield_desc ?
true :
false);
288 return (_pfield_desc);
298 assert (_pfield_desc);
304 assert (_pfield_desc);
315 void alloc_space(
const unsigned size);
318 void set_min_value();
320 void set_max_value();
324 assert (_pfield_desc);
329 assert (_pfield_desc);
336 assert (_pfield_desc);
341 bool copy_value(
void* data)
const;
344 void set_value(
const void* data,
const uint length);
346 void set_int_value(
const int data);
348 void set_bit_value(
const bool data);
350 void set_smallint_value(
const short data);
352 void set_float_value(
const double data);
354 void set_long_value(
const long long data);
356 void set_decimal_value(
const decimal data);
358 void set_time_value(
const time_t data);
362 void set_char_value(
const char data);
364 void set_fixed_string_value(
const char*
string,
const uint len);
366 void set_var_string_value(
const char*
string,
const uint len);
369 int get_int_value()
const;
371 short get_smallint_value()
const;
373 bool get_bit_value()
const;
375 char get_char_value()
const;
377 void get_string_value(
char*
string,
const uint bufsize)
const;
379 double get_float_value()
const;
381 long long get_long_value()
const;
383 decimal get_decimal_value()
const;
385 time_t get_time_value()
const;
389 bool load_value_from_file(ifstream& is,
const char delim);
396 void print_value(ostream& os = cout);
398 int get_debug_str(
char*& buf);
431 _size =
sizeof(bool);
434 _size =
sizeof(short);
437 _size =
sizeof(char);
443 _size =
sizeof(double);
446 _size =
sizeof(
long long);
455 _size = size *
sizeof(char);
463 _allow_null = allow_null;
481 if (strlen(_keydesc) > 1) {
482 return (&_keydesc[0]);
493 sprintf(_keydesc,
"i%d", _size);
498 sprintf(_keydesc,
"f%d", _size);
502 sprintf(_keydesc,
"b*%d", _size);
509 sprintf(_keydesc,
"b%d", _size);
512 return (&_keydesc[0]);
536 if (_pfield_desc == pfd) {
543 switch (_pfield_desc->type()) {
545 _max_size =
sizeof(bool);
546 _real_size = _max_size;
549 _max_size =
sizeof(short);
550 _real_size = _max_size;
553 _max_size =
sizeof(char);
554 _real_size = _max_size;
557 _max_size =
sizeof(int);
558 _real_size = _max_size;
561 _max_size =
sizeof(double);
562 _real_size = _max_size;
565 _max_size =
sizeof(
long long);
566 _real_size = _max_size;
576 _data = (
char*)malloc(sz);
580 _max_size = _pfield_desc->fieldmaxsize();
586 _value._string = _data;
592 sz = _pfield_desc->fieldmaxsize() + 1;
596 if ((_data_size >= sz) && (_data)) {
599 memset(_data, 0, _data_size);
606 _data = (
char*)malloc(sz);
607 memset(_data, 0, sz);
611 _value._string = _data;
628 switch (_pfield_desc->type()) {
633 _value._smallint = 0;
652 if (_data && _data_size) {
653 memset(_data, 0, _data_size);
671 assert (_pfield_desc);
673 assert (len <= _real_size);
676 if (_data_size >= len) {
684 _data = (
char*)malloc(len);
688 memset(_data, 0, _data_size);
691 _value._string = _data;
704 assert (_pfield_desc);
707 switch (_pfield_desc->type()) {
714 memcpy(&_value, data, _max_size);
717 memcpy(_value._time, data,
MIN(length, _real_size));
720 set_var_string_value((
const char*)data, length);
725 _real_size =
MIN(length, _max_size);
726 assert(_data_size >= _real_size);
727 memset(_data,
'\0', _data_size);
728 memcpy(_value._string, data, _real_size);
742 assert (_pfield_desc);
745 switch (_pfield_desc->type()) {
769 _value._string = _data;
777 assert (_pfield_desc);
781 switch (_pfield_desc->type()) {
802 memset(_data,
'z', _data_size);
803 _value._string = _data;
807 memset(_data,
'9', _data_size);
808 _value._string = _data;
824 assert (_pfield_desc);
825 assert (!_null_flag);
827 switch (_pfield_desc->type()) {
829 memcpy(data, &_value._bit, _max_size);
832 memcpy(data, &_value._smallint, _max_size);
835 memcpy(data, &_value._char, _max_size);
838 memcpy(data, &_value._int, _max_size);
841 memcpy(data, &_value._float, _max_size);
844 memcpy(data, &_value._long, _max_size);
847 memcpy(data, _value._time, _real_size);
850 memcpy(data, _value._string, _real_size);
855 memcpy(data, _value._string, _real_size);
871 assert (_pfield_desc);
872 assert (_pfield_desc->type() ==
SQL_INT);
878 assert (_pfield_desc);
879 assert (_pfield_desc->type() ==
SQL_BIT);
885 assert (_pfield_desc);
888 _value._smallint = data;
892 assert (_pfield_desc);
893 assert (_pfield_desc->type() ==
SQL_CHAR);
899 assert (_pfield_desc);
900 assert (_pfield_desc->type() ==
SQL_FLOAT);
902 _value._float = data;
906 assert (_pfield_desc);
907 assert (_pfield_desc->type() ==
SQL_LONG);
913 assert (_pfield_desc);
914 assert (_pfield_desc->type() ==
SQL_FLOAT);
920 assert (_pfield_desc);
921 assert (_pfield_desc->type() ==
SQL_FLOAT);
923 _value._float = data;
927 assert (_pfield_desc);
928 assert (_pfield_desc->type() ==
SQL_TIME);
930 memcpy(_value._time, &data, _real_size);
943 assert (_pfield_desc);
949 _real_size =
MIN(len + 1, _data_size);
950 assert (_data_size >= _real_size);
952 memset(_value._string,
'\0', _data_size);
953 memcpy(_value._string,
string, _real_size);
969 assert (_pfield_desc);
972 _real_size =
MIN(len + 1, _max_size);
973 alloc_space(_real_size);
974 assert (_data_size >= _real_size);
976 memcpy(_value._string,
string, _real_size);
978 _value._string[_real_size - 1] = 0;
991 assert (_pfield_desc);
992 assert (_pfield_desc->type() ==
SQL_INT);
993 return (_value._int);
997 assert (_pfield_desc);
998 assert (_pfield_desc->type() ==
SQL_BIT);
999 return (_value._bit);
1003 assert (_pfield_desc);
1005 return (_value._smallint);
1009 assert (_pfield_desc);
1010 assert (_pfield_desc->type() ==
SQL_CHAR);
1011 return (_value._char);
1015 const uint bufsize)
const {
1016 assert (_pfield_desc);
1021 memset(buffer,
'\0', bufsize);
1022 memcpy(buffer, _value._string,
MIN(bufsize, _real_size));
1026 assert (_pfield_desc);
1027 assert (_pfield_desc->type() ==
SQL_FLOAT);
1028 return (_value._float);
1032 assert (_pfield_desc);
1033 assert (_pfield_desc->type() ==
SQL_LONG);
1034 return (_value._long);
1038 assert (_pfield_desc);
1039 assert (_pfield_desc->type() ==
SQL_FLOAT);
1040 return (
decimal(_value._float));
1044 assert (_pfield_desc);
1045 assert (_pfield_desc->type() ==
SQL_FLOAT);
1046 return ((time_t)_value._float);
1050 assert (_pfield_desc);
1051 assert (_pfield_desc->type() ==
SQL_TIME);
1052 return *(_value._time);
bool is_null() const
Definition: field.h:323
bool is_variable_length(sqltype_t type) const
Definition: field.h:166
bool get_bit_value() const
Definition: field.h:996
sqltype_t type() const
Definition: field.h:180
unsigned _data_size
Definition: field.h:237
void set_null(bool v=true)
Definition: field.h:328
bool _allow_null
Definition: field.h:134
void set_value(const void *data, const uint length)
Definition: field.h:702
unsigned maxsize() const
Definition: field.h:303
static int size()
Definition: field.h:73
void set_fixed_string_value(const char *string, const uint len)
Definition: field.h:941
short _smallint
Definition: field.h:227
void set_max_value()
Definition: field.h:776
int _int
Definition: field.h:229
time_t _time
Definition: field.h:63
timestamp_t()
Definition: field.h:67
~timestamp_t()
Definition: field.h:71
#define MAX_SMALLINT
Definition: file_desc.h:54
unsigned realsize() const
Definition: field.h:297
void string(char *dest, const int len) const
Definition: field.h:77
void set_field_desc(field_desc_t *fd)
Definition: field.h:291
void set_bit_value(const bool data)
Definition: field.h:877
#define MIN_SMALLINT
Definition: file_desc.h:53
void set_char_value(const char data)
Definition: field.h:891
short _size
Definition: field.h:133
unsigned _max_size
Definition: field.h:239
unsigned fieldmaxsize() const
Definition: field.h:175
const char * keydesc()
Definition: field.h:191
bool is_setup()
Definition: field.h:282
#define MAX_INT
Definition: file_desc.h:56
#define MAX_FLOAT
Definition: file_desc.h:58
bool is_variable_length() const
Definition: field.h:171
void set_time_value(const time_t data)
Definition: field.h:919
#define MIN(x, y)
Definition: w_minmax.h:69
unsigned _real_size
Definition: field.h:238
bool _bit
Definition: field.h:226
void set_decimal_value(const decimal data)
Definition: field.h:912
char _char
Definition: field.h:228
~field_desc_t()
Definition: field.h:154
void setup(field_desc_t *pfd)
Definition: field.h:532
int get_int_value() const
Definition: field.h:990
field_desc_t * _pfield_desc
Definition: field.h:221
bool _null_flag
Definition: field.h:222
field_value_t()
Definition: field.h:246
void reset()
Definition: field.h:624
bool allow_null() const
Definition: field.h:185
void get_string_value(char *string, const uint bufsize) const
Definition: field.h:1014
const char * _set_keydesc()
Definition: field.h:480
void set_long_value(const long long data)
Definition: field.h:905
void set_tstamp_value(const timestamp_t &data)
Definition: field.h:926
field_value_t(field_desc_t *pfd)
Definition: field.h:254
const char * name() const
Definition: field.h:161
void set_var_string_value(const char *string, const uint len)
Definition: field.h:967
timestamp_t & get_tstamp_value() const
Definition: field.h:1049
double _float
Definition: field.h:230
A test-and-test-and-set spinlock.
Definition: tatas.h:25
#define MIN_FLOAT
Definition: file_desc.h:57
bool copy_value(void *data) const
Definition: field.h:823
short get_smallint_value() const
Definition: field.h:1002
: Descriptors for Shore files/indexes, and structures that help in keeping track of the created files...
const unsigned int MAX_KEYDESC_LEN
Definition: file_desc.h:46
void set_min_value()
Definition: field.h:741
char * _data
Definition: field.h:236
field_desc_t()
Definition: field.h:145
void set_float_value(const double data)
Definition: field.h:898
void setup(const sqltype_t type, const char *name, const short size=0, const bool allow_null=false)
Definition: field.h:418
long long get_long_value() const
Definition: field.h:1031
sqltype_t
Definition: field.h:99
bool is_variable_length()
Definition: field.h:335
time_t get_time_value() const
Definition: field.h:1043
const unsigned int MAX_FIELDNAME_LEN
Definition: file_desc.h:44
tatas_lock _fielddesc_lock
Definition: field.h:128
double to_double() const
Definition: decimal.h:106
void set_int_value(const int data)
Definition: field.h:870
char * _string
Definition: field.h:233
double get_float_value() const
Definition: field.h:1025
timestamp_t * _time
Definition: field.h:232
void alloc_space(const unsigned size)
Definition: field.h:670
void set_smallint_value(const short data)
Definition: field.h:884
long long _long
Definition: field.h:231
decimal get_decimal_value() const
Definition: field.h:1037
sqltype_t _type
Definition: field.h:132
char get_char_value() const
Definition: field.h:1008
field_desc_t * field_desc()
Definition: field.h:287
#define MIN_INT
Definition: file_desc.h:55
#define CRITICAL_SECTION(name, lock)
Definition: critical_section.h:75
bool _is_setup
Definition: field.h:135
~field_value_t()
Definition: field.h:264