Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
371d6ac1
Commit
371d6ac1
authored
Apr 06, 2019
by
Alexander Barkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-19197 Move ASSERT_COLUMN_MARKED_FOR_XXX as methods to Field
parent
18bf0bf4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
151 additions
and
142 deletions
+151
-142
sql/field.cc
sql/field.cc
+148
-142
sql/field.h
sql/field.h
+3
-0
No files found.
sql/field.cc
View file @
371d6ac1
...
@@ -58,19 +58,25 @@ const char field_separator=',';
...
@@ -58,19 +58,25 @@ const char field_separator=',';
((ulong) ((1LL << MY_MIN(arg, 4) * 8) - 1))
((ulong) ((1LL << MY_MIN(arg, 4) * 8) - 1))
// Column marked for read or the field set to read out or record[0] or [1]
// Column marked for read or the field set to read out or record[0] or [1]
#define ASSERT_COLUMN_MARKED_FOR_READ \
inline
bool
Field
::
marked_for_read
()
const
DBUG_ASSERT(!table || \
{
(!table->read_set || \
return
!
table
||
bitmap_is_set(table->read_set, field_index) || \
(
!
table
->
read_set
||
(!(ptr >= table->record[0] && \
bitmap_is_set
(
table
->
read_set
,
field_index
)
||
ptr < table->record[0] + table->s->reclength))))
(
!
(
ptr
>=
table
->
record
[
0
]
&&
ptr
<
table
->
record
[
0
]
+
table
->
s
->
reclength
)));
#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED \
}
DBUG_ASSERT(is_stat_field || !table || \
(!table->write_set || \
bitmap_is_set(table->write_set, field_index) || \
inline
bool
Field
::
marked_for_write_or_computed
()
const
(!(ptr >= table->record[0] && \
{
ptr < table->record[0] + table->s->reclength))))
return
is_stat_field
||
!
table
||
(
!
table
->
write_set
||
bitmap_is_set
(
table
->
write_set
,
field_index
)
||
(
!
(
ptr
>=
table
->
record
[
0
]
&&
ptr
<
table
->
record
[
0
]
+
table
->
s
->
reclength
)));
}
#define FLAGSTR(S,F) ((S) & (F) ? #F " " : "")
#define FLAGSTR(S,F) ((S) & (F) ? #F " " : "")
...
@@ -1686,7 +1692,7 @@ int Field::warn_if_overflow(int op_result)
...
@@ -1686,7 +1692,7 @@ int Field::warn_if_overflow(int op_result)
String
*
Field
::
val_int_as_str
(
String
*
val_buffer
,
bool
unsigned_val
)
String
*
Field
::
val_int_as_str
(
String
*
val_buffer
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
CHARSET_INFO
*
cs
=
&
my_charset_bin
;
CHARSET_INFO
*
cs
=
&
my_charset_bin
;
uint
length
;
uint
length
;
longlong
value
=
val_int
();
longlong
value
=
val_int
();
...
@@ -2034,7 +2040,7 @@ longlong Field::convert_decimal2longlong(const my_decimal *val,
...
@@ -2034,7 +2040,7 @@ longlong Field::convert_decimal2longlong(const my_decimal *val,
int
Field_int
::
store_decimal
(
const
my_decimal
*
val
)
int
Field_int
::
store_decimal
(
const
my_decimal
*
val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
err
=
0
;
int
err
=
0
;
longlong
i
=
convert_decimal2longlong
(
val
,
unsigned_flag
,
&
err
);
longlong
i
=
convert_decimal2longlong
(
val
,
unsigned_flag
,
&
err
);
return
MY_TEST
(
err
|
store
(
i
,
unsigned_flag
));
return
MY_TEST
(
err
|
store
(
i
,
unsigned_flag
));
...
@@ -2057,7 +2063,7 @@ int Field_int::store_decimal(const my_decimal *val)
...
@@ -2057,7 +2063,7 @@ int Field_int::store_decimal(const my_decimal *val)
my_decimal
*
Field_int
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_int
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
nr
=
val_int
();
longlong
nr
=
val_int
();
int2my_decimal
(
E_DEC_FATAL_ERROR
,
nr
,
unsigned_flag
,
decimal_value
);
int2my_decimal
(
E_DEC_FATAL_ERROR
,
nr
,
unsigned_flag
,
decimal_value
);
return
decimal_value
;
return
decimal_value
;
...
@@ -2066,7 +2072,7 @@ my_decimal* Field_int::val_decimal(my_decimal *decimal_value)
...
@@ -2066,7 +2072,7 @@ my_decimal* Field_int::val_decimal(my_decimal *decimal_value)
bool
Field_int
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
)
bool
Field_int
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
Longlong_hybrid
nr
(
val_int
(),
(
flags
&
UNSIGNED_FLAG
));
Longlong_hybrid
nr
(
val_int
(),
(
flags
&
UNSIGNED_FLAG
));
return
int_to_datetime_with_warn
(
get_thd
(),
nr
,
ltime
,
return
int_to_datetime_with_warn
(
get_thd
(),
nr
,
ltime
,
fuzzydate
,
table
->
s
,
field_name
.
str
);
fuzzydate
,
table
->
s
,
field_name
.
str
);
...
@@ -2075,7 +2081,7 @@ bool Field_int::get_date(MYSQL_TIME *ltime,date_mode_t fuzzydate)
...
@@ -2075,7 +2081,7 @@ bool Field_int::get_date(MYSQL_TIME *ltime,date_mode_t fuzzydate)
bool
Field_vers_trx_id
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
,
ulonglong
trx_id
)
bool
Field_vers_trx_id
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
,
ulonglong
trx_id
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_ASSERT
(
ltime
);
DBUG_ASSERT
(
ltime
);
if
(
!
table
||
!
table
->
s
)
if
(
!
table
||
!
table
->
s
)
return
true
;
return
true
;
...
@@ -2201,7 +2207,7 @@ void Field_num::make_send_field(Send_field *field)
...
@@ -2201,7 +2207,7 @@ void Field_num::make_send_field(Send_field *field)
int
Field_str
::
store_decimal
(
const
my_decimal
*
d
)
int
Field_str
::
store_decimal
(
const
my_decimal
*
d
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
double
val
;
double
val
;
/* TODO: use decimal2string? */
/* TODO: use decimal2string? */
int
err
=
warn_if_overflow
(
my_decimal2double
(
E_DEC_FATAL_ERROR
&
int
err
=
warn_if_overflow
(
my_decimal2double
(
E_DEC_FATAL_ERROR
&
...
@@ -2212,7 +2218,7 @@ int Field_str::store_decimal(const my_decimal *d)
...
@@ -2212,7 +2218,7 @@ int Field_str::store_decimal(const my_decimal *d)
my_decimal
*
Field_str
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_str
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
nr
=
val_int
();
longlong
nr
=
val_int
();
int2my_decimal
(
E_DEC_FATAL_ERROR
,
nr
,
0
,
decimal_value
);
int2my_decimal
(
E_DEC_FATAL_ERROR
,
nr
,
0
,
decimal_value
);
return
decimal_value
;
return
decimal_value
;
...
@@ -2271,7 +2277,7 @@ bool Field::get_date(MYSQL_TIME *to, date_mode_t mode)
...
@@ -2271,7 +2277,7 @@ bool Field::get_date(MYSQL_TIME *to, date_mode_t mode)
int
Field
::
store_time_dec
(
const
MYSQL_TIME
*
ltime
,
uint
dec
)
int
Field
::
store_time_dec
(
const
MYSQL_TIME
*
ltime
,
uint
dec
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
char
buff
[
MAX_DATE_STRING_REP_LENGTH
];
char
buff
[
MAX_DATE_STRING_REP_LENGTH
];
uint
length
=
(
uint
)
my_TIME_to_str
(
ltime
,
buff
,
dec
);
uint
length
=
(
uint
)
my_TIME_to_str
(
ltime
,
buff
,
dec
);
/* Avoid conversion when field character set is ASCII compatible */
/* Avoid conversion when field character set is ASCII compatible */
...
@@ -2528,7 +2534,7 @@ void Field_decimal::overflow(bool negative)
...
@@ -2528,7 +2534,7 @@ void Field_decimal::overflow(bool negative)
int
Field_decimal
::
store
(
const
char
*
from_arg
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_decimal
::
store
(
const
char
*
from_arg
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
char
buff
[
STRING_BUFFER_USUAL_SIZE
];
char
buff
[
STRING_BUFFER_USUAL_SIZE
];
String
tmp
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
String
tmp
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
const
uchar
*
from
=
(
uchar
*
)
from_arg
;
const
uchar
*
from
=
(
uchar
*
)
from_arg
;
...
@@ -2894,7 +2900,7 @@ int Field_decimal::store(const char *from_arg, size_t len, CHARSET_INFO *cs)
...
@@ -2894,7 +2900,7 @@ int Field_decimal::store(const char *from_arg, size_t len, CHARSET_INFO *cs)
int
Field_decimal
::
store
(
double
nr
)
int
Field_decimal
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
if
(
unsigned_flag
&&
nr
<
0
)
if
(
unsigned_flag
&&
nr
<
0
)
{
{
overflow
(
1
);
overflow
(
1
);
...
@@ -2932,7 +2938,7 @@ int Field_decimal::store(double nr)
...
@@ -2932,7 +2938,7 @@ int Field_decimal::store(double nr)
int
Field_decimal
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_decimal
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
char
buff
[
22
];
char
buff
[
22
];
uint
length
,
int_part
;
uint
length
,
int_part
;
char
fyllchar
;
char
fyllchar
;
...
@@ -2968,7 +2974,7 @@ int Field_decimal::store(longlong nr, bool unsigned_val)
...
@@ -2968,7 +2974,7 @@ int Field_decimal::store(longlong nr, bool unsigned_val)
double
Field_decimal
::
val_real
(
void
)
double
Field_decimal
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int
not_used
;
int
not_used
;
char
*
end_not_used
;
char
*
end_not_used
;
return
my_strntod
(
&
my_charset_bin
,
(
char
*
)
ptr
,
field_length
,
&
end_not_used
,
return
my_strntod
(
&
my_charset_bin
,
(
char
*
)
ptr
,
field_length
,
&
end_not_used
,
...
@@ -2977,7 +2983,7 @@ double Field_decimal::val_real(void)
...
@@ -2977,7 +2983,7 @@ double Field_decimal::val_real(void)
longlong
Field_decimal
::
val_int
(
void
)
longlong
Field_decimal
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int
not_used
;
int
not_used
;
if
(
unsigned_flag
)
if
(
unsigned_flag
)
return
my_strntoull
(
&
my_charset_bin
,
(
char
*
)
ptr
,
field_length
,
10
,
NULL
,
return
my_strntoull
(
&
my_charset_bin
,
(
char
*
)
ptr
,
field_length
,
10
,
NULL
,
...
@@ -2990,7 +2996,7 @@ longlong Field_decimal::val_int(void)
...
@@ -2990,7 +2996,7 @@ longlong Field_decimal::val_int(void)
String
*
Field_decimal
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
Field_decimal
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
val_ptr
)
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
uchar
*
str
;
uchar
*
str
;
size_t
tmp_length
;
size_t
tmp_length
;
...
@@ -3175,7 +3181,7 @@ void Field_new_decimal::set_value_on_overflow(my_decimal *decimal_value,
...
@@ -3175,7 +3181,7 @@ void Field_new_decimal::set_value_on_overflow(my_decimal *decimal_value,
bool
Field_new_decimal
::
store_value
(
const
my_decimal
*
decimal_value
,
bool
Field_new_decimal
::
store_value
(
const
my_decimal
*
decimal_value
,
int
*
native_error
)
int
*
native_error
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
DBUG_ENTER
(
"Field_new_decimal::store_value"
);
DBUG_ENTER
(
"Field_new_decimal::store_value"
);
#ifndef DBUG_OFF
#ifndef DBUG_OFF
...
@@ -3233,7 +3239,7 @@ bool Field_new_decimal::store_value(const my_decimal *decimal_value)
...
@@ -3233,7 +3239,7 @@ bool Field_new_decimal::store_value(const my_decimal *decimal_value)
int
Field_new_decimal
::
store
(
const
char
*
from
,
size_t
length
,
int
Field_new_decimal
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
charset_arg
)
CHARSET_INFO
*
charset_arg
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
my_decimal
decimal_value
;
my_decimal
decimal_value
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
DBUG_ENTER
(
"Field_new_decimal::store(char*)"
);
DBUG_ENTER
(
"Field_new_decimal::store(char*)"
);
...
@@ -3317,7 +3323,7 @@ int Field_new_decimal::store(const char *from, size_t length,
...
@@ -3317,7 +3323,7 @@ int Field_new_decimal::store(const char *from, size_t length,
int
Field_new_decimal
::
store
(
double
nr
)
int
Field_new_decimal
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
my_decimal
decimal_value
;
my_decimal
decimal_value
;
int
err
;
int
err
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
...
@@ -3342,7 +3348,7 @@ int Field_new_decimal::store(double nr)
...
@@ -3342,7 +3348,7 @@ int Field_new_decimal::store(double nr)
int
Field_new_decimal
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_new_decimal
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
my_decimal
decimal_value
;
my_decimal
decimal_value
;
int
err
;
int
err
;
...
@@ -3364,7 +3370,7 @@ int Field_new_decimal::store(longlong nr, bool unsigned_val)
...
@@ -3364,7 +3370,7 @@ int Field_new_decimal::store(longlong nr, bool unsigned_val)
int
Field_new_decimal
::
store_decimal
(
const
my_decimal
*
decimal_value
)
int
Field_new_decimal
::
store_decimal
(
const
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
return
store_value
(
decimal_value
);
return
store_value
(
decimal_value
);
}
}
...
@@ -3378,7 +3384,7 @@ int Field_new_decimal::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
...
@@ -3378,7 +3384,7 @@ int Field_new_decimal::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
my_decimal
*
Field_new_decimal
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_new_decimal
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_ENTER
(
"Field_new_decimal::val_decimal"
);
DBUG_ENTER
(
"Field_new_decimal::val_decimal"
);
binary2my_decimal
(
E_DEC_FATAL_ERROR
,
ptr
,
decimal_value
,
binary2my_decimal
(
E_DEC_FATAL_ERROR
,
ptr
,
decimal_value
,
precision
,
dec
);
precision
,
dec
);
...
@@ -3581,7 +3587,7 @@ int Field_int::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
...
@@ -3581,7 +3587,7 @@ int Field_int::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
int
Field_tiny
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_tiny
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
;
int
error
;
longlong
rnd
;
longlong
rnd
;
...
@@ -3593,7 +3599,7 @@ int Field_tiny::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -3593,7 +3599,7 @@ int Field_tiny::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_tiny
::
store
(
double
nr
)
int
Field_tiny
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
nr
=
rint
(
nr
);
nr
=
rint
(
nr
);
if
(
unsigned_flag
)
if
(
unsigned_flag
)
...
@@ -3636,7 +3642,7 @@ int Field_tiny::store(double nr)
...
@@ -3636,7 +3642,7 @@ int Field_tiny::store(double nr)
int
Field_tiny
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_tiny
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
if
(
unsigned_flag
)
if
(
unsigned_flag
)
...
@@ -3681,7 +3687,7 @@ int Field_tiny::store(longlong nr, bool unsigned_val)
...
@@ -3681,7 +3687,7 @@ int Field_tiny::store(longlong nr, bool unsigned_val)
double
Field_tiny
::
val_real
(
void
)
double
Field_tiny
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int
tmp
=
unsigned_flag
?
(
int
)
ptr
[
0
]
:
int
tmp
=
unsigned_flag
?
(
int
)
ptr
[
0
]
:
(
int
)
((
signed
char
*
)
ptr
)[
0
];
(
int
)
((
signed
char
*
)
ptr
)[
0
];
return
(
double
)
tmp
;
return
(
double
)
tmp
;
...
@@ -3690,7 +3696,7 @@ double Field_tiny::val_real(void)
...
@@ -3690,7 +3696,7 @@ double Field_tiny::val_real(void)
longlong
Field_tiny
::
val_int
(
void
)
longlong
Field_tiny
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int
tmp
=
unsigned_flag
?
(
int
)
ptr
[
0
]
:
int
tmp
=
unsigned_flag
?
(
int
)
ptr
[
0
]
:
(
int
)
((
signed
char
*
)
ptr
)[
0
];
(
int
)
((
signed
char
*
)
ptr
)[
0
];
return
(
longlong
)
tmp
;
return
(
longlong
)
tmp
;
...
@@ -3700,7 +3706,7 @@ longlong Field_tiny::val_int(void)
...
@@ -3700,7 +3706,7 @@ longlong Field_tiny::val_int(void)
String
*
Field_tiny
::
val_str
(
String
*
val_buffer
,
String
*
Field_tiny
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
long
nr
=
unsigned_flag
?
(
long
)
ptr
[
0
]
:
(
long
)
((
signed
char
*
)
ptr
)[
0
];
long
nr
=
unsigned_flag
?
(
long
)
ptr
[
0
]
:
(
long
)
((
signed
char
*
)
ptr
)[
0
];
return
val_str_from_long
(
val_buffer
,
5
,
-
10
,
nr
);
return
val_str_from_long
(
val_buffer
,
5
,
-
10
,
nr
);
}
}
...
@@ -3741,7 +3747,7 @@ void Field_tiny::sql_type(String &res) const
...
@@ -3741,7 +3747,7 @@ void Field_tiny::sql_type(String &res) const
int
Field_short
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_short
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
store_tmp
;
int
store_tmp
;
int
error
;
int
error
;
longlong
rnd
;
longlong
rnd
;
...
@@ -3755,7 +3761,7 @@ int Field_short::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -3755,7 +3761,7 @@ int Field_short::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_short
::
store
(
double
nr
)
int
Field_short
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
int16
res
;
int16
res
;
nr
=
rint
(
nr
);
nr
=
rint
(
nr
);
...
@@ -3800,7 +3806,7 @@ int Field_short::store(double nr)
...
@@ -3800,7 +3806,7 @@ int Field_short::store(double nr)
int
Field_short
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_short
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
int16
res
;
int16
res
;
...
@@ -3848,7 +3854,7 @@ int Field_short::store(longlong nr, bool unsigned_val)
...
@@ -3848,7 +3854,7 @@ int Field_short::store(longlong nr, bool unsigned_val)
double
Field_short
::
val_real
(
void
)
double
Field_short
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
short
j
;
short
j
;
j
=
sint2korr
(
ptr
);
j
=
sint2korr
(
ptr
);
return
unsigned_flag
?
(
double
)
(
unsigned
short
)
j
:
(
double
)
j
;
return
unsigned_flag
?
(
double
)
(
unsigned
short
)
j
:
(
double
)
j
;
...
@@ -3856,7 +3862,7 @@ double Field_short::val_real(void)
...
@@ -3856,7 +3862,7 @@ double Field_short::val_real(void)
longlong
Field_short
::
val_int
(
void
)
longlong
Field_short
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
short
j
;
short
j
;
j
=
sint2korr
(
ptr
);
j
=
sint2korr
(
ptr
);
return
unsigned_flag
?
(
longlong
)
(
unsigned
short
)
j
:
(
longlong
)
j
;
return
unsigned_flag
?
(
longlong
)
(
unsigned
short
)
j
:
(
longlong
)
j
;
...
@@ -3866,7 +3872,7 @@ longlong Field_short::val_int(void)
...
@@ -3866,7 +3872,7 @@ longlong Field_short::val_int(void)
String
*
Field_short
::
val_str
(
String
*
val_buffer
,
String
*
Field_short
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
short
j
=
sint2korr
(
ptr
);
short
j
=
sint2korr
(
ptr
);
long
nr
=
unsigned_flag
?
(
long
)
(
unsigned
short
)
j
:
(
long
)
j
;
long
nr
=
unsigned_flag
?
(
long
)
(
unsigned
short
)
j
:
(
long
)
j
;
return
val_str_from_long
(
val_buffer
,
7
,
-
10
,
nr
);
return
val_str_from_long
(
val_buffer
,
7
,
-
10
,
nr
);
...
@@ -3915,7 +3921,7 @@ void Field_short::sql_type(String &res) const
...
@@ -3915,7 +3921,7 @@ void Field_short::sql_type(String &res) const
int
Field_medium
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_medium
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
store_tmp
;
int
store_tmp
;
int
error
;
int
error
;
longlong
rnd
;
longlong
rnd
;
...
@@ -3929,7 +3935,7 @@ int Field_medium::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -3929,7 +3935,7 @@ int Field_medium::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_medium
::
store
(
double
nr
)
int
Field_medium
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
nr
=
rint
(
nr
);
nr
=
rint
(
nr
);
if
(
unsigned_flag
)
if
(
unsigned_flag
)
...
@@ -3975,7 +3981,7 @@ int Field_medium::store(double nr)
...
@@ -3975,7 +3981,7 @@ int Field_medium::store(double nr)
int
Field_medium
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_medium
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
if
(
unsigned_flag
)
if
(
unsigned_flag
)
...
@@ -4024,7 +4030,7 @@ int Field_medium::store(longlong nr, bool unsigned_val)
...
@@ -4024,7 +4030,7 @@ int Field_medium::store(longlong nr, bool unsigned_val)
double
Field_medium
::
val_real
(
void
)
double
Field_medium
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
long
j
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
long
j
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
return
(
double
)
j
;
return
(
double
)
j
;
}
}
...
@@ -4032,7 +4038,7 @@ double Field_medium::val_real(void)
...
@@ -4032,7 +4038,7 @@ double Field_medium::val_real(void)
longlong
Field_medium
::
val_int
(
void
)
longlong
Field_medium
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
long
j
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
long
j
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
return
(
longlong
)
j
;
return
(
longlong
)
j
;
}
}
...
@@ -4041,7 +4047,7 @@ longlong Field_medium::val_int(void)
...
@@ -4041,7 +4047,7 @@ longlong Field_medium::val_int(void)
String
*
Field_medium
::
val_str
(
String
*
val_buffer
,
String
*
Field_medium
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
long
nr
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
long
nr
=
unsigned_flag
?
(
long
)
uint3korr
(
ptr
)
:
sint3korr
(
ptr
);
return
val_str_from_long
(
val_buffer
,
10
,
-
10
,
nr
);
return
val_str_from_long
(
val_buffer
,
10
,
-
10
,
nr
);
}
}
...
@@ -4067,7 +4073,7 @@ String *Field_int::val_str_from_long(String *val_buffer,
...
@@ -4067,7 +4073,7 @@ String *Field_int::val_str_from_long(String *val_buffer,
bool
Field_medium
::
send_binary
(
Protocol
*
protocol
)
bool
Field_medium
::
send_binary
(
Protocol
*
protocol
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
protocol
->
store_long
(
Field_medium
::
val_int
());
return
protocol
->
store_long
(
Field_medium
::
val_int
());
}
}
...
@@ -4113,7 +4119,7 @@ void Field_medium::sql_type(String &res) const
...
@@ -4113,7 +4119,7 @@ void Field_medium::sql_type(String &res) const
int
Field_long
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_long
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
long
store_tmp
;
long
store_tmp
;
int
error
;
int
error
;
longlong
rnd
;
longlong
rnd
;
...
@@ -4127,7 +4133,7 @@ int Field_long::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -4127,7 +4133,7 @@ int Field_long::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_long
::
store
(
double
nr
)
int
Field_long
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
int32
res
;
int32
res
;
nr
=
rint
(
nr
);
nr
=
rint
(
nr
);
...
@@ -4172,7 +4178,7 @@ int Field_long::store(double nr)
...
@@ -4172,7 +4178,7 @@ int Field_long::store(double nr)
int
Field_long
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_long
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
int32
res
;
int32
res
;
...
@@ -4218,7 +4224,7 @@ int Field_long::store(longlong nr, bool unsigned_val)
...
@@ -4218,7 +4224,7 @@ int Field_long::store(longlong nr, bool unsigned_val)
double
Field_long
::
val_real
(
void
)
double
Field_long
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int32
j
;
int32
j
;
j
=
sint4korr
(
ptr
);
j
=
sint4korr
(
ptr
);
return
unsigned_flag
?
(
double
)
(
uint32
)
j
:
(
double
)
j
;
return
unsigned_flag
?
(
double
)
(
uint32
)
j
:
(
double
)
j
;
...
@@ -4226,7 +4232,7 @@ double Field_long::val_real(void)
...
@@ -4226,7 +4232,7 @@ double Field_long::val_real(void)
longlong
Field_long
::
val_int
(
void
)
longlong
Field_long
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int32
j
;
int32
j
;
/* See the comment in Field_long::store(long long) */
/* See the comment in Field_long::store(long long) */
DBUG_ASSERT
(
!
table
||
table
->
in_use
==
current_thd
);
DBUG_ASSERT
(
!
table
||
table
->
in_use
==
current_thd
);
...
@@ -4238,7 +4244,7 @@ longlong Field_long::val_int(void)
...
@@ -4238,7 +4244,7 @@ longlong Field_long::val_int(void)
String
*
Field_long
::
val_str
(
String
*
val_buffer
,
String
*
Field_long
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
long
nr
=
unsigned_flag
?
(
long
)
uint4korr
(
ptr
)
:
sint4korr
(
ptr
);
long
nr
=
unsigned_flag
?
(
long
)
uint4korr
(
ptr
)
:
sint4korr
(
ptr
);
return
val_str_from_long
(
val_buffer
,
12
,
unsigned_flag
?
10
:
-
10
,
nr
);
return
val_str_from_long
(
val_buffer
,
12
,
unsigned_flag
?
10
:
-
10
,
nr
);
}
}
...
@@ -4246,7 +4252,7 @@ String *Field_long::val_str(String *val_buffer,
...
@@ -4246,7 +4252,7 @@ String *Field_long::val_str(String *val_buffer,
bool
Field_long
::
send_binary
(
Protocol
*
protocol
)
bool
Field_long
::
send_binary
(
Protocol
*
protocol
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
protocol
->
store_long
(
Field_long
::
val_int
());
return
protocol
->
store_long
(
Field_long
::
val_int
());
}
}
...
@@ -4286,7 +4292,7 @@ void Field_long::sql_type(String &res) const
...
@@ -4286,7 +4292,7 @@ void Field_long::sql_type(String &res) const
int
Field_longlong
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_longlong
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
char
*
end
;
char
*
end
;
ulonglong
tmp
;
ulonglong
tmp
;
...
@@ -4309,7 +4315,7 @@ int Field_longlong::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -4309,7 +4315,7 @@ int Field_longlong::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_longlong
::
store
(
double
nr
)
int
Field_longlong
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
Converter_double_to_longlong
conv
(
nr
,
unsigned_flag
);
Converter_double_to_longlong
conv
(
nr
,
unsigned_flag
);
if
(
unlikely
(
conv
.
error
()))
if
(
unlikely
(
conv
.
error
()))
...
@@ -4322,7 +4328,7 @@ int Field_longlong::store(double nr)
...
@@ -4322,7 +4328,7 @@ int Field_longlong::store(double nr)
int
Field_longlong
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_longlong
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
if
(
unlikely
(
nr
<
0
))
// Only possible error
if
(
unlikely
(
nr
<
0
))
// Only possible error
...
@@ -4346,7 +4352,7 @@ int Field_longlong::store(longlong nr, bool unsigned_val)
...
@@ -4346,7 +4352,7 @@ int Field_longlong::store(longlong nr, bool unsigned_val)
double
Field_longlong
::
val_real
(
void
)
double
Field_longlong
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
j
;
longlong
j
;
j
=
sint8korr
(
ptr
);
j
=
sint8korr
(
ptr
);
/* The following is open coded to avoid a bug in gcc 3.3 */
/* The following is open coded to avoid a bug in gcc 3.3 */
...
@@ -4361,7 +4367,7 @@ double Field_longlong::val_real(void)
...
@@ -4361,7 +4367,7 @@ double Field_longlong::val_real(void)
longlong
Field_longlong
::
val_int
(
void
)
longlong
Field_longlong
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
j
;
longlong
j
;
j
=
sint8korr
(
ptr
);
j
=
sint8korr
(
ptr
);
return
j
;
return
j
;
...
@@ -4391,7 +4397,7 @@ String *Field_longlong::val_str(String *val_buffer,
...
@@ -4391,7 +4397,7 @@ String *Field_longlong::val_str(String *val_buffer,
bool
Field_longlong
::
send_binary
(
Protocol
*
protocol
)
bool
Field_longlong
::
send_binary
(
Protocol
*
protocol
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
protocol
->
store_longlong
(
Field_longlong
::
val_int
(),
unsigned_flag
);
return
protocol
->
store_longlong
(
Field_longlong
::
val_int
(),
unsigned_flag
);
}
}
...
@@ -4433,14 +4439,14 @@ void Field_longlong::sql_type(String &res) const
...
@@ -4433,14 +4439,14 @@ void Field_longlong::sql_type(String &res) const
void
Field_longlong
::
set_max
()
void
Field_longlong
::
set_max
()
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
set_notnull
();
set_notnull
();
int8store
(
ptr
,
unsigned_flag
?
ULONGLONG_MAX
:
LONGLONG_MAX
);
int8store
(
ptr
,
unsigned_flag
?
ULONGLONG_MAX
:
LONGLONG_MAX
);
}
}
bool
Field_longlong
::
is_max
()
bool
Field_longlong
::
is_max
()
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
if
(
unsigned_flag
)
if
(
unsigned_flag
)
{
{
ulonglong
j
;
ulonglong
j
;
...
@@ -4470,7 +4476,7 @@ int Field_float::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -4470,7 +4476,7 @@ int Field_float::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_float
::
store
(
double
nr
)
int
Field_float
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
truncate_double
(
&
nr
,
field_length
,
int
error
=
truncate_double
(
&
nr
,
field_length
,
not_fixed
?
NOT_FIXED_DEC
:
dec
,
not_fixed
?
NOT_FIXED_DEC
:
dec
,
unsigned_flag
,
FLT_MAX
);
unsigned_flag
,
FLT_MAX
);
...
@@ -4499,7 +4505,7 @@ int Field_float::store(longlong nr, bool unsigned_val)
...
@@ -4499,7 +4505,7 @@ int Field_float::store(longlong nr, bool unsigned_val)
double
Field_float
::
val_real
(
void
)
double
Field_float
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
float
j
;
float
j
;
float4get
(
j
,
ptr
);
float4get
(
j
,
ptr
);
return
((
double
)
j
);
return
((
double
)
j
);
...
@@ -4516,7 +4522,7 @@ longlong Field_float::val_int(void)
...
@@ -4516,7 +4522,7 @@ longlong Field_float::val_int(void)
String
*
Field_float
::
val_str
(
String
*
val_buffer
,
String
*
Field_float
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_ASSERT
(
!
zerofill
||
field_length
<=
MAX_FIELD_CHARLENGTH
);
DBUG_ASSERT
(
!
zerofill
||
field_length
<=
MAX_FIELD_CHARLENGTH
);
float
nr
;
float
nr
;
float4get
(
nr
,
ptr
);
float4get
(
nr
,
ptr
);
...
@@ -4598,7 +4604,7 @@ void Field_float::sort_string(uchar *to,uint length __attribute__((unused)))
...
@@ -4598,7 +4604,7 @@ void Field_float::sort_string(uchar *to,uint length __attribute__((unused)))
bool
Field_float
::
send_binary
(
Protocol
*
protocol
)
bool
Field_float
::
send_binary
(
Protocol
*
protocol
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
protocol
->
store
((
float
)
Field_float
::
val_real
(),
dec
,
(
String
*
)
0
);
return
protocol
->
store
((
float
)
Field_float
::
val_real
(),
dec
,
(
String
*
)
0
);
}
}
...
@@ -4649,7 +4655,7 @@ int Field_double::store(const char *from,size_t len,CHARSET_INFO *cs)
...
@@ -4649,7 +4655,7 @@ int Field_double::store(const char *from,size_t len,CHARSET_INFO *cs)
int
Field_double
::
store
(
double
nr
)
int
Field_double
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
truncate_double
(
&
nr
,
field_length
,
int
error
=
truncate_double
(
&
nr
,
field_length
,
not_fixed
?
NOT_FIXED_DEC
:
dec
,
not_fixed
?
NOT_FIXED_DEC
:
dec
,
unsigned_flag
,
DBL_MAX
);
unsigned_flag
,
DBL_MAX
);
...
@@ -4803,7 +4809,7 @@ int Field_real::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
...
@@ -4803,7 +4809,7 @@ int Field_real::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
double
Field_double
::
val_real
(
void
)
double
Field_double
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
double
j
;
double
j
;
float8get
(
j
,
ptr
);
float8get
(
j
,
ptr
);
return
j
;
return
j
;
...
@@ -4821,7 +4827,7 @@ longlong Field_double::val_int_from_real(bool want_unsigned_result)
...
@@ -4821,7 +4827,7 @@ longlong Field_double::val_int_from_real(bool want_unsigned_result)
my_decimal
*
Field_real
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_real
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
double2my_decimal
(
E_DEC_FATAL_ERROR
,
val_real
(),
decimal_value
);
double2my_decimal
(
E_DEC_FATAL_ERROR
,
val_real
(),
decimal_value
);
return
decimal_value
;
return
decimal_value
;
}
}
...
@@ -4829,7 +4835,7 @@ my_decimal *Field_real::val_decimal(my_decimal *decimal_value)
...
@@ -4829,7 +4835,7 @@ my_decimal *Field_real::val_decimal(my_decimal *decimal_value)
bool
Field_real
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
)
bool
Field_real
::
get_date
(
MYSQL_TIME
*
ltime
,
date_mode_t
fuzzydate
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
double
nr
=
val_real
();
double
nr
=
val_real
();
return
double_to_datetime_with_warn
(
get_thd
(),
nr
,
ltime
,
fuzzydate
,
return
double_to_datetime_with_warn
(
get_thd
(),
nr
,
ltime
,
fuzzydate
,
table
->
s
,
field_name
.
str
);
table
->
s
,
field_name
.
str
);
...
@@ -4859,7 +4865,7 @@ Item *Field_real::get_equal_const_item(THD *thd, const Context &ctx,
...
@@ -4859,7 +4865,7 @@ Item *Field_real::get_equal_const_item(THD *thd, const Context &ctx,
String
*
Field_double
::
val_str
(
String
*
val_buffer
,
String
*
Field_double
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_ASSERT
(
!
zerofill
||
field_length
<=
MAX_FIELD_CHARLENGTH
);
DBUG_ASSERT
(
!
zerofill
||
field_length
<=
MAX_FIELD_CHARLENGTH
);
double
nr
;
double
nr
;
float8get
(
nr
,
ptr
);
float8get
(
nr
,
ptr
);
...
@@ -5017,7 +5023,7 @@ int Field_timestamp::save_in_field(Field *to)
...
@@ -5017,7 +5023,7 @@ int Field_timestamp::save_in_field(Field *to)
my_time_t
Field_timestamp
::
get_timestamp
(
const
uchar
*
pos
,
my_time_t
Field_timestamp
::
get_timestamp
(
const
uchar
*
pos
,
ulong
*
sec_part
)
const
ulong
*
sec_part
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
*
sec_part
=
0
;
*
sec_part
=
0
;
return
sint4korr
(
pos
);
return
sint4korr
(
pos
);
}
}
...
@@ -5025,7 +5031,7 @@ my_time_t Field_timestamp::get_timestamp(const uchar *pos,
...
@@ -5025,7 +5031,7 @@ my_time_t Field_timestamp::get_timestamp(const uchar *pos,
bool
Field_timestamp
::
val_native
(
Native
*
to
)
bool
Field_timestamp
::
val_native
(
Native
*
to
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
my_time_t
sec
=
(
my_time_t
)
sint4korr
(
ptr
);
my_time_t
sec
=
(
my_time_t
)
sint4korr
(
ptr
);
return
Timestamp_or_zero_datetime
(
Timestamp
(
sec
,
0
),
sec
==
0
).
return
Timestamp_or_zero_datetime
(
Timestamp
(
sec
,
0
),
sec
==
0
).
to_native
(
to
,
0
);
to_native
(
to
,
0
);
...
@@ -5035,7 +5041,7 @@ bool Field_timestamp::val_native(Native *to)
...
@@ -5035,7 +5041,7 @@ bool Field_timestamp::val_native(Native *to)
int
Field_timestamp
::
store_TIME_with_warning
(
THD
*
thd
,
const
Datetime
*
dt
,
int
Field_timestamp
::
store_TIME_with_warning
(
THD
*
thd
,
const
Datetime
*
dt
,
const
ErrConv
*
str
,
int
was_cut
)
const
ErrConv
*
str
,
int
was_cut
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
static
const
Timestamp
zero
(
0
,
0
);
static
const
Timestamp
zero
(
0
,
0
);
// Handle totally bad values
// Handle totally bad values
...
@@ -5439,7 +5445,7 @@ void Field_timestamp_hires::store_TIMEVAL(const timeval &tv)
...
@@ -5439,7 +5445,7 @@ void Field_timestamp_hires::store_TIMEVAL(const timeval &tv)
my_time_t
Field_timestamp_hires
::
get_timestamp
(
const
uchar
*
pos
,
my_time_t
Field_timestamp_hires
::
get_timestamp
(
const
uchar
*
pos
,
ulong
*
sec_part
)
const
ulong
*
sec_part
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
*
sec_part
=
(
long
)
sec_part_unshift
(
read_bigendian
(
pos
+
4
,
sec_part_bytes
(
dec
)),
dec
);
*
sec_part
=
(
long
)
sec_part_unshift
(
read_bigendian
(
pos
+
4
,
sec_part_bytes
(
dec
)),
dec
);
return
mi_uint4korr
(
pos
);
return
mi_uint4korr
(
pos
);
}
}
...
@@ -5447,7 +5453,7 @@ my_time_t Field_timestamp_hires::get_timestamp(const uchar *pos,
...
@@ -5447,7 +5453,7 @@ my_time_t Field_timestamp_hires::get_timestamp(const uchar *pos,
bool
Field_timestamp_hires
::
val_native
(
Native
*
to
)
bool
Field_timestamp_hires
::
val_native
(
Native
*
to
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
struct
timeval
tm
;
struct
timeval
tm
;
tm
.
tv_sec
=
mi_uint4korr
(
ptr
);
tm
.
tv_sec
=
mi_uint4korr
(
ptr
);
tm
.
tv_usec
=
(
ulong
)
sec_part_unshift
(
read_bigendian
(
ptr
+
4
,
sec_part_bytes
(
dec
)),
dec
);
tm
.
tv_usec
=
(
ulong
)
sec_part_unshift
(
read_bigendian
(
ptr
+
4
,
sec_part_bytes
(
dec
)),
dec
);
...
@@ -5533,7 +5539,7 @@ void Field_timestampf::store_TIMEVAL(const timeval &tm)
...
@@ -5533,7 +5539,7 @@ void Field_timestampf::store_TIMEVAL(const timeval &tm)
void
Field_timestampf
::
set_max
()
void
Field_timestampf
::
set_max
()
{
{
DBUG_ENTER
(
"Field_timestampf::set_max"
);
DBUG_ENTER
(
"Field_timestampf::set_max"
);
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
DBUG_ASSERT
(
dec
==
TIME_SECOND_PART_DIGITS
);
DBUG_ASSERT
(
dec
==
TIME_SECOND_PART_DIGITS
);
set_notnull
();
set_notnull
();
...
@@ -5546,7 +5552,7 @@ void Field_timestampf::set_max()
...
@@ -5546,7 +5552,7 @@ void Field_timestampf::set_max()
bool
Field_timestampf
::
is_max
()
bool
Field_timestampf
::
is_max
()
{
{
DBUG_ENTER
(
"Field_timestampf::is_max"
);
DBUG_ENTER
(
"Field_timestampf::is_max"
);
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_RETURN
(
mi_sint4korr
(
ptr
)
==
TIMESTAMP_MAX_VALUE
&&
DBUG_RETURN
(
mi_sint4korr
(
ptr
)
==
TIMESTAMP_MAX_VALUE
&&
mi_sint3korr
(
ptr
+
4
)
==
TIME_MAX_SECOND_PART
);
mi_sint3korr
(
ptr
+
4
)
==
TIME_MAX_SECOND_PART
);
...
@@ -5564,7 +5570,7 @@ my_time_t Field_timestampf::get_timestamp(const uchar *pos,
...
@@ -5564,7 +5570,7 @@ my_time_t Field_timestampf::get_timestamp(const uchar *pos,
bool
Field_timestampf
::
val_native
(
Native
*
to
)
bool
Field_timestampf
::
val_native
(
Native
*
to
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
// Check if it's '0000-00-00 00:00:00' rather than a real timestamp
// Check if it's '0000-00-00 00:00:00' rather than a real timestamp
if
(
ptr
[
0
]
==
0
&&
ptr
[
1
]
==
0
&&
ptr
[
2
]
==
0
&&
ptr
[
3
]
==
0
)
if
(
ptr
[
0
]
==
0
&&
ptr
[
1
]
==
0
&&
ptr
[
2
]
==
0
&&
ptr
[
3
]
==
0
)
{
{
...
@@ -5618,7 +5624,7 @@ int Field_datetime::store_TIME_with_warning(const Datetime *dt,
...
@@ -5618,7 +5624,7 @@ int Field_datetime::store_TIME_with_warning(const Datetime *dt,
const
ErrConv
*
str
,
const
ErrConv
*
str
,
int
was_cut
)
int
was_cut
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
// Handle totally bad values
// Handle totally bad values
if
(
!
dt
->
is_valid_datetime
())
if
(
!
dt
->
is_valid_datetime
())
return
store_invalid_with_warning
(
str
,
was_cut
,
"datetime"
);
return
store_invalid_with_warning
(
str
,
was_cut
,
"datetime"
);
...
@@ -5765,7 +5771,7 @@ Item *Field_temporal::get_equal_const_item_datetime(THD *thd,
...
@@ -5765,7 +5771,7 @@ Item *Field_temporal::get_equal_const_item_datetime(THD *thd,
int
Field_time
::
store_TIME_with_warning
(
const
Time
*
t
,
int
Field_time
::
store_TIME_with_warning
(
const
Time
*
t
,
const
ErrConv
*
str
,
int
warn
)
const
ErrConv
*
str
,
int
warn
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
// Handle totally bad values
// Handle totally bad values
if
(
!
t
->
is_valid_time
())
if
(
!
t
->
is_valid_time
())
return
store_invalid_with_warning
(
str
,
warn
,
"time"
);
return
store_invalid_with_warning
(
str
,
warn
,
"time"
);
...
@@ -5867,14 +5873,14 @@ Field *Field_time::new_key_field(MEM_ROOT *root, TABLE *new_table,
...
@@ -5867,14 +5873,14 @@ Field *Field_time::new_key_field(MEM_ROOT *root, TABLE *new_table,
double
Field_time
::
val_real
(
void
)
double
Field_time
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
uint32
j
=
(
uint32
)
uint3korr
(
ptr
);
uint32
j
=
(
uint32
)
uint3korr
(
ptr
);
return
(
double
)
j
;
return
(
double
)
j
;
}
}
longlong
Field_time
::
val_int
(
void
)
longlong
Field_time
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
(
longlong
)
sint3korr
(
ptr
);
return
(
longlong
)
sint3korr
(
ptr
);
}
}
...
@@ -5888,7 +5894,7 @@ longlong Field_time::val_int(void)
...
@@ -5888,7 +5894,7 @@ longlong Field_time::val_int(void)
String
*
Field_time
::
val_str
(
String
*
str
,
String
*
Field_time
::
val_str
(
String
*
str
,
String
*
unused
__attribute__
((
unused
)))
String
*
unused
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
MYSQL_TIME
ltime
;
MYSQL_TIME
ltime
;
get_date
(
&
ltime
,
Datetime
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
get_date
(
&
ltime
,
Datetime
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
str
->
alloc
(
field_length
+
1
);
str
->
alloc
(
field_length
+
1
);
...
@@ -6110,7 +6116,7 @@ Item *Field_time::get_equal_const_item(THD *thd, const Context &ctx,
...
@@ -6110,7 +6116,7 @@ Item *Field_time::get_equal_const_item(THD *thd, const Context &ctx,
longlong
Field_time_with_dec
::
val_int
(
void
)
longlong
Field_time_with_dec
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
MYSQL_TIME
ltime
;
MYSQL_TIME
ltime
;
get_date
(
&
ltime
,
Time
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
get_date
(
&
ltime
,
Time
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
longlong
val
=
TIME_to_ulonglong_time
(
&
ltime
);
longlong
val
=
TIME_to_ulonglong_time
(
&
ltime
);
...
@@ -6119,7 +6125,7 @@ longlong Field_time_with_dec::val_int(void)
...
@@ -6119,7 +6125,7 @@ longlong Field_time_with_dec::val_int(void)
double
Field_time_with_dec
::
val_real
(
void
)
double
Field_time_with_dec
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
MYSQL_TIME
ltime
;
MYSQL_TIME
ltime
;
get_date
(
&
ltime
,
Time
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
get_date
(
&
ltime
,
Time
::
Options
(
TIME_TIME_ONLY
,
get_thd
()));
return
TIME_to_double
(
&
ltime
);
return
TIME_to_double
(
&
ltime
);
...
@@ -6194,7 +6200,7 @@ bool Field_timef::get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate)
...
@@ -6194,7 +6200,7 @@ bool Field_timef::get_date(MYSQL_TIME *ltime, date_mode_t fuzzydate)
int
Field_year
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
int
Field_year
::
store
(
const
char
*
from
,
size_t
len
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
char
*
end
;
char
*
end
;
int
error
;
int
error
;
longlong
nr
=
cs
->
cset
->
strntoull10rnd
(
cs
,
from
,
len
,
0
,
&
end
,
&
error
);
longlong
nr
=
cs
->
cset
->
strntoull10rnd
(
cs
,
from
,
len
,
0
,
&
end
,
&
error
);
...
@@ -6242,7 +6248,7 @@ int Field_year::store(double nr)
...
@@ -6242,7 +6248,7 @@ int Field_year::store(double nr)
int
Field_year
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_year
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
if
(
nr
<
0
||
(
nr
>=
100
&&
nr
<=
1900
)
||
nr
>
2155
)
if
(
nr
<
0
||
(
nr
>=
100
&&
nr
<=
1900
)
||
nr
>
2155
)
{
{
*
ptr
=
0
;
*
ptr
=
0
;
...
@@ -6274,7 +6280,7 @@ int Field_year::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
...
@@ -6274,7 +6280,7 @@ int Field_year::store_time_dec(const MYSQL_TIME *ltime, uint dec_arg)
bool
Field_year
::
send_binary
(
Protocol
*
protocol
)
bool
Field_year
::
send_binary
(
Protocol
*
protocol
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
ulonglong
tmp
=
Field_year
::
val_int
();
ulonglong
tmp
=
Field_year
::
val_int
();
return
protocol
->
store_short
(
tmp
);
return
protocol
->
store_short
(
tmp
);
}
}
...
@@ -6288,7 +6294,7 @@ double Field_year::val_real(void)
...
@@ -6288,7 +6294,7 @@ double Field_year::val_real(void)
longlong
Field_year
::
val_int
(
void
)
longlong
Field_year
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
DBUG_ASSERT
(
field_length
==
2
||
field_length
==
4
);
DBUG_ASSERT
(
field_length
==
2
||
field_length
==
4
);
int
tmp
=
(
int
)
ptr
[
0
];
int
tmp
=
(
int
)
ptr
[
0
];
if
(
field_length
!=
4
)
if
(
field_length
!=
4
)
...
@@ -6337,7 +6343,7 @@ int Field_date_common::store_TIME_with_warning(const Datetime *dt,
...
@@ -6337,7 +6343,7 @@ int Field_date_common::store_TIME_with_warning(const Datetime *dt,
const
ErrConv
*
str
,
const
ErrConv
*
str
,
int
was_cut
)
int
was_cut
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
// Handle totally bad values
// Handle totally bad values
if
(
!
dt
->
is_valid_datetime
())
if
(
!
dt
->
is_valid_datetime
())
return
store_invalid_with_warning
(
str
,
was_cut
,
"date"
);
return
store_invalid_with_warning
(
str
,
was_cut
,
"date"
);
...
@@ -6422,7 +6428,7 @@ bool Field_date::send_binary(Protocol *protocol)
...
@@ -6422,7 +6428,7 @@ bool Field_date::send_binary(Protocol *protocol)
double
Field_date
::
val_real
(
void
)
double
Field_date
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int32
j
;
int32
j
;
j
=
sint4korr
(
ptr
);
j
=
sint4korr
(
ptr
);
return
(
double
)
(
uint32
)
j
;
return
(
double
)
(
uint32
)
j
;
...
@@ -6431,7 +6437,7 @@ double Field_date::val_real(void)
...
@@ -6431,7 +6437,7 @@ double Field_date::val_real(void)
longlong
Field_date
::
val_int
(
void
)
longlong
Field_date
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int32
j
;
int32
j
;
j
=
sint4korr
(
ptr
);
j
=
sint4korr
(
ptr
);
return
(
longlong
)
(
uint32
)
j
;
return
(
longlong
)
(
uint32
)
j
;
...
@@ -6441,7 +6447,7 @@ longlong Field_date::val_int(void)
...
@@ -6441,7 +6447,7 @@ longlong Field_date::val_int(void)
bool
Field_date
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
bool
Field_date
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
date_mode_t
fuzzydate
)
const
date_mode_t
fuzzydate
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int32
tmp
=
sint4korr
(
pos
);
int32
tmp
=
sint4korr
(
pos
);
ltime
->
year
=
(
int
)
((
uint32
)
tmp
/
10000L
%
10000
);
ltime
->
year
=
(
int
)
((
uint32
)
tmp
/
10000L
%
10000
);
ltime
->
month
=
(
int
)
((
uint32
)
tmp
/
100
%
100
);
ltime
->
month
=
(
int
)
((
uint32
)
tmp
/
100
%
100
);
...
@@ -6513,14 +6519,14 @@ bool Field_newdate::send_binary(Protocol *protocol)
...
@@ -6513,14 +6519,14 @@ bool Field_newdate::send_binary(Protocol *protocol)
double
Field_newdate
::
val_real
(
void
)
double
Field_newdate
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
(
double
)
Field_newdate
::
val_int
();
return
(
double
)
Field_newdate
::
val_int
();
}
}
longlong
Field_newdate
::
val_int
(
void
)
longlong
Field_newdate
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
ulong
j
=
uint3korr
(
ptr
);
ulong
j
=
uint3korr
(
ptr
);
j
=
(
j
%
32L
)
+
(
j
/
32L
%
16L
)
*
100L
+
(
j
/
(
16L
*
32L
))
*
10000L
;
j
=
(
j
%
32L
)
+
(
j
/
32L
%
16L
)
*
100L
+
(
j
/
(
16L
*
32L
))
*
10000L
;
return
(
longlong
)
j
;
return
(
longlong
)
j
;
...
@@ -6530,7 +6536,7 @@ longlong Field_newdate::val_int(void)
...
@@ -6530,7 +6536,7 @@ longlong Field_newdate::val_int(void)
String
*
Field_newdate
::
val_str
(
String
*
val_buffer
,
String
*
Field_newdate
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
val_buffer
->
alloc
(
field_length
);
val_buffer
->
alloc
(
field_length
);
val_buffer
->
length
(
field_length
);
val_buffer
->
length
(
field_length
);
uint32
tmp
=
(
uint32
)
uint3korr
(
ptr
);
uint32
tmp
=
(
uint32
)
uint3korr
(
ptr
);
...
@@ -6560,7 +6566,7 @@ String *Field_newdate::val_str(String *val_buffer,
...
@@ -6560,7 +6566,7 @@ String *Field_newdate::val_str(String *val_buffer,
bool
Field_newdate
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
bool
Field_newdate
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
date_mode_t
fuzzydate
)
const
date_mode_t
fuzzydate
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
uint32
tmp
=
(
uint32
)
uint3korr
(
pos
);
uint32
tmp
=
(
uint32
)
uint3korr
(
pos
);
ltime
->
day
=
tmp
&
31
;
ltime
->
day
=
tmp
&
31
;
ltime
->
month
=
(
tmp
>>
5
)
&
15
;
ltime
->
month
=
(
tmp
>>
5
)
&
15
;
...
@@ -6681,7 +6687,7 @@ double Field_datetime::val_real(void)
...
@@ -6681,7 +6687,7 @@ double Field_datetime::val_real(void)
longlong
Field_datetime
::
val_int
(
void
)
longlong
Field_datetime
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
j
;
longlong
j
;
j
=
sint8korr
(
ptr
);
j
=
sint8korr
(
ptr
);
return
j
;
return
j
;
...
@@ -6694,7 +6700,7 @@ String *Field_datetime::val_str(String *val_buffer,
...
@@ -6694,7 +6700,7 @@ String *Field_datetime::val_str(String *val_buffer,
val_buffer
->
alloc
(
field_length
);
val_buffer
->
alloc
(
field_length
);
val_buffer
->
length
(
field_length
);
val_buffer
->
length
(
field_length
);
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
ulonglong
tmp
;
ulonglong
tmp
;
long
part1
,
part2
;
long
part1
,
part2
;
char
*
pos
;
char
*
pos
;
...
@@ -6737,7 +6743,7 @@ String *Field_datetime::val_str(String *val_buffer,
...
@@ -6737,7 +6743,7 @@ String *Field_datetime::val_str(String *val_buffer,
bool
Field_datetime
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
bool
Field_datetime
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
date_mode_t
fuzzydate
)
const
date_mode_t
fuzzydate
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
tmp
=
sint8korr
(
pos
);
longlong
tmp
=
sint8korr
(
pos
);
uint32
part1
,
part2
;
uint32
part1
,
part2
;
part1
=
(
uint32
)
(
tmp
/
1000000LL
);
part1
=
(
uint32
)
(
tmp
/
1000000LL
);
...
@@ -6851,7 +6857,7 @@ String *Field_datetime_with_dec::val_str(String *str,
...
@@ -6851,7 +6857,7 @@ String *Field_datetime_with_dec::val_str(String *str,
bool
Field_datetime_hires
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
bool
Field_datetime_hires
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
date_mode_t
fuzzydate
)
const
date_mode_t
fuzzydate
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
ulonglong
packed
=
read_bigendian
(
pos
,
Field_datetime_hires
::
pack_length
());
ulonglong
packed
=
read_bigendian
(
pos
,
Field_datetime_hires
::
pack_length
());
unpack_time
(
sec_part_unshift
(
packed
,
dec
),
ltime
,
MYSQL_TIMESTAMP_DATETIME
);
unpack_time
(
sec_part_unshift
(
packed
,
dec
),
ltime
,
MYSQL_TIMESTAMP_DATETIME
);
return
validate_MMDD
(
packed
,
ltime
->
month
,
ltime
->
day
,
fuzzydate
);
return
validate_MMDD
(
packed
,
ltime
->
month
,
ltime
->
day
,
fuzzydate
);
...
@@ -6891,7 +6897,7 @@ void Field_datetimef::store_TIME(const MYSQL_TIME *ltime)
...
@@ -6891,7 +6897,7 @@ void Field_datetimef::store_TIME(const MYSQL_TIME *ltime)
bool
Field_datetimef
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
bool
Field_datetimef
::
get_TIME
(
MYSQL_TIME
*
ltime
,
const
uchar
*
pos
,
date_mode_t
fuzzydate
)
const
date_mode_t
fuzzydate
)
const
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
longlong
tmp
=
my_datetime_packed_from_binary
(
pos
,
dec
);
longlong
tmp
=
my_datetime_packed_from_binary
(
pos
,
dec
);
TIME_from_longlong_datetime_packed
(
ltime
,
tmp
);
TIME_from_longlong_datetime_packed
(
ltime
,
tmp
);
return
validate_MMDD
(
tmp
,
ltime
->
month
,
ltime
->
day
,
fuzzydate
);
return
validate_MMDD
(
tmp
,
ltime
->
month
,
ltime
->
day
,
fuzzydate
);
...
@@ -6996,7 +7002,7 @@ Field_longstr::report_if_important_data(const char *pstr, const char *end,
...
@@ -6996,7 +7002,7 @@ Field_longstr::report_if_important_data(const char *pstr, const char *end,
int
Field_string
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_string
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
uint
copy_length
;
uint
copy_length
;
int
rc
;
int
rc
;
...
@@ -7042,7 +7048,7 @@ int Field_str::store(longlong nr, bool unsigned_val)
...
@@ -7042,7 +7048,7 @@ int Field_str::store(longlong nr, bool unsigned_val)
int
Field_str
::
store
(
double
nr
)
int
Field_str
::
store
(
double
nr
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
char
buff
[
DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE
];
char
buff
[
DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE
];
uint
local_char_length
=
MY_MIN
(
sizeof
(
buff
),
uint
local_char_length
=
MY_MIN
(
sizeof
(
buff
),
field_length
/
field_charset
->
mbmaxlen
);
field_length
/
field_charset
->
mbmaxlen
);
...
@@ -7178,7 +7184,7 @@ Field_string::Warn_filter_string::Warn_filter_string(const THD *thd,
...
@@ -7178,7 +7184,7 @@ Field_string::Warn_filter_string::Warn_filter_string(const THD *thd,
double
Field_string
::
val_real
(
void
)
double
Field_string
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
return
Converter_strntod_with_warn
(
get_thd
(),
return
Converter_strntod_with_warn
(
get_thd
(),
Warn_filter_string
(
thd
,
this
),
Warn_filter_string
(
thd
,
this
),
...
@@ -7190,7 +7196,7 @@ double Field_string::val_real(void)
...
@@ -7190,7 +7196,7 @@ double Field_string::val_real(void)
longlong
Field_string
::
val_int
(
void
)
longlong
Field_string
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
return
Converter_strntoll_with_warn
(
thd
,
Warn_filter_string
(
thd
,
this
),
return
Converter_strntoll_with_warn
(
thd
,
Warn_filter_string
(
thd
,
this
),
Field_string
::
charset
(),
Field_string
::
charset
(),
...
@@ -7202,7 +7208,7 @@ longlong Field_string::val_int(void)
...
@@ -7202,7 +7208,7 @@ longlong Field_string::val_int(void)
String
*
Field_string
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
Field_string
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
val_ptr
)
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
/* See the comment for Field_long::store(long long) */
/* See the comment for Field_long::store(long long) */
DBUG_ASSERT
(
!
table
||
table
->
in_use
==
current_thd
);
DBUG_ASSERT
(
!
table
||
table
->
in_use
==
current_thd
);
size_t
length
;
size_t
length
;
...
@@ -7220,7 +7226,7 @@ String *Field_string::val_str(String *val_buffer __attribute__((unused)),
...
@@ -7220,7 +7226,7 @@ String *Field_string::val_str(String *val_buffer __attribute__((unused)),
my_decimal
*
Field_string
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_string
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
Converter_str2my_decimal_with_warn
(
thd
,
Converter_str2my_decimal_with_warn
(
thd
,
Warn_filter_string
(
thd
,
this
),
Warn_filter_string
(
thd
,
this
),
...
@@ -7553,7 +7559,7 @@ int Field_varstring::save_field_metadata(uchar *metadata_ptr)
...
@@ -7553,7 +7559,7 @@ int Field_varstring::save_field_metadata(uchar *metadata_ptr)
int
Field_varstring
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_varstring
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
uint
copy_length
;
uint
copy_length
;
int
rc
;
int
rc
;
...
@@ -7570,7 +7576,7 @@ int Field_varstring::store(const char *from,size_t length,CHARSET_INFO *cs)
...
@@ -7570,7 +7576,7 @@ int Field_varstring::store(const char *from,size_t length,CHARSET_INFO *cs)
double
Field_varstring
::
val_real
(
void
)
double
Field_varstring
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
return
Converter_strntod_with_warn
(
thd
,
Warn_filter
(
thd
),
return
Converter_strntod_with_warn
(
thd
,
Warn_filter
(
thd
),
Field_varstring
::
charset
(),
Field_varstring
::
charset
(),
...
@@ -7581,7 +7587,7 @@ double Field_varstring::val_real(void)
...
@@ -7581,7 +7587,7 @@ double Field_varstring::val_real(void)
longlong
Field_varstring
::
val_int
(
void
)
longlong
Field_varstring
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
return
Converter_strntoll_with_warn
(
thd
,
Warn_filter
(
thd
),
return
Converter_strntoll_with_warn
(
thd
,
Warn_filter
(
thd
),
Field_varstring
::
charset
(),
Field_varstring
::
charset
(),
...
@@ -7593,7 +7599,7 @@ longlong Field_varstring::val_int(void)
...
@@ -7593,7 +7599,7 @@ longlong Field_varstring::val_int(void)
String
*
Field_varstring
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
Field_varstring
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
val_ptr
)
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
val_ptr
->
set
((
const
char
*
)
get_data
(),
get_length
(),
field_charset
);
val_ptr
->
set
((
const
char
*
)
get_data
(),
get_length
(),
field_charset
);
return
val_ptr
;
return
val_ptr
;
}
}
...
@@ -7601,7 +7607,7 @@ String *Field_varstring::val_str(String *val_buffer __attribute__((unused)),
...
@@ -7601,7 +7607,7 @@ String *Field_varstring::val_str(String *val_buffer __attribute__((unused)),
my_decimal
*
Field_varstring
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_varstring
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
Converter_str2my_decimal_with_warn
(
thd
,
Warn_filter
(
thd
),
Converter_str2my_decimal_with_warn
(
thd
,
Warn_filter
(
thd
),
E_DEC_FATAL_ERROR
,
E_DEC_FATAL_ERROR
,
...
@@ -8104,7 +8110,7 @@ String *Field_longstr::uncompress(String *val_buffer, String *val_ptr,
...
@@ -8104,7 +8110,7 @@ String *Field_longstr::uncompress(String *val_buffer, String *val_ptr,
int
Field_varstring_compressed
::
store
(
const
char
*
from
,
size_t
length
,
int
Field_varstring_compressed
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
uint
compressed_length
;
uint
compressed_length
;
int
rc
=
compress
((
char
*
)
get_data
(),
field_length
,
from
,
(
uint
)
length
,
int
rc
=
compress
((
char
*
)
get_data
(),
field_length
,
from
,
(
uint
)
length
,
Field_varstring_compressed
::
max_display_length
(),
Field_varstring_compressed
::
max_display_length
(),
...
@@ -8117,14 +8123,14 @@ int Field_varstring_compressed::store(const char *from, size_t length,
...
@@ -8117,14 +8123,14 @@ int Field_varstring_compressed::store(const char *from, size_t length,
String
*
Field_varstring_compressed
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
)
String
*
Field_varstring_compressed
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
uncompress
(
val_buffer
,
val_ptr
,
get_data
(),
get_length
());
return
uncompress
(
val_buffer
,
val_ptr
,
get_data
(),
get_length
());
}
}
double
Field_varstring_compressed
::
val_real
(
void
)
double
Field_varstring_compressed
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
String
buf
;
String
buf
;
val_str
(
&
buf
,
&
buf
);
val_str
(
&
buf
,
&
buf
);
...
@@ -8135,7 +8141,7 @@ double Field_varstring_compressed::val_real(void)
...
@@ -8135,7 +8141,7 @@ double Field_varstring_compressed::val_real(void)
longlong
Field_varstring_compressed
::
val_int
(
void
)
longlong
Field_varstring_compressed
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
String
buf
;
String
buf
;
val_str
(
&
buf
,
&
buf
);
val_str
(
&
buf
,
&
buf
);
...
@@ -8236,7 +8242,7 @@ int Field_blob::copy_value(Field_blob *from)
...
@@ -8236,7 +8242,7 @@ int Field_blob::copy_value(Field_blob *from)
int
Field_blob
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_blob
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
size_t
copy_length
,
new_length
;
size_t
copy_length
,
new_length
;
uint
copy_len
;
uint
copy_len
;
char
*
tmp
;
char
*
tmp
;
...
@@ -8332,7 +8338,7 @@ int Field_blob::store(const char *from,size_t length,CHARSET_INFO *cs)
...
@@ -8332,7 +8338,7 @@ int Field_blob::store(const char *from,size_t length,CHARSET_INFO *cs)
double
Field_blob
::
val_real
(
void
)
double
Field_blob
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
char
*
blob
;
char
*
blob
;
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
if
(
!
blob
)
if
(
!
blob
)
...
@@ -8346,7 +8352,7 @@ double Field_blob::val_real(void)
...
@@ -8346,7 +8352,7 @@ double Field_blob::val_real(void)
longlong
Field_blob
::
val_int
(
void
)
longlong
Field_blob
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
char
*
blob
;
char
*
blob
;
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
if
(
!
blob
)
if
(
!
blob
)
...
@@ -8361,7 +8367,7 @@ longlong Field_blob::val_int(void)
...
@@ -8361,7 +8367,7 @@ longlong Field_blob::val_int(void)
String
*
Field_blob
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
Field_blob
::
val_str
(
String
*
val_buffer
__attribute__
((
unused
)),
String
*
val_ptr
)
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
char
*
blob
;
char
*
blob
;
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
char
*
));
if
(
!
blob
)
if
(
!
blob
)
...
@@ -8374,7 +8380,7 @@ String *Field_blob::val_str(String *val_buffer __attribute__((unused)),
...
@@ -8374,7 +8380,7 @@ String *Field_blob::val_str(String *val_buffer __attribute__((unused)),
my_decimal
*
Field_blob
::
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
Field_blob
::
val_decimal
(
my_decimal
*
decimal_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
const
char
*
blob
;
const
char
*
blob
;
size_t
length
;
size_t
length
;
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
const
uchar
*
));
memcpy
(
&
blob
,
ptr
+
packlength
,
sizeof
(
const
uchar
*
));
...
@@ -8760,7 +8766,7 @@ void Field_blob::make_send_field(Send_field *field)
...
@@ -8760,7 +8766,7 @@ void Field_blob::make_send_field(Send_field *field)
int
Field_blob_compressed
::
store
(
const
char
*
from
,
size_t
length
,
int
Field_blob_compressed
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
uint
compressed_length
;
uint
compressed_length
;
uint
max_length
=
max_data_length
();
uint
max_length
=
max_data_length
();
uint
to_length
=
(
uint
)
MY_MIN
(
max_length
,
uint
to_length
=
(
uint
)
MY_MIN
(
max_length
,
...
@@ -8787,14 +8793,14 @@ int Field_blob_compressed::store(const char *from, size_t length,
...
@@ -8787,14 +8793,14 @@ int Field_blob_compressed::store(const char *from, size_t length,
String
*
Field_blob_compressed
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
)
String
*
Field_blob_compressed
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
uncompress
(
val_buffer
,
val_ptr
,
get_ptr
(),
get_length
());
return
uncompress
(
val_buffer
,
val_ptr
,
get_ptr
(),
get_length
());
}
}
double
Field_blob_compressed
::
val_real
(
void
)
double
Field_blob_compressed
::
val_real
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
String
buf
;
String
buf
;
val_str
(
&
buf
,
&
buf
);
val_str
(
&
buf
,
&
buf
);
...
@@ -8805,7 +8811,7 @@ double Field_blob_compressed::val_real(void)
...
@@ -8805,7 +8811,7 @@ double Field_blob_compressed::val_real(void)
longlong
Field_blob_compressed
::
val_int
(
void
)
longlong
Field_blob_compressed
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
THD
*
thd
=
get_thd
();
THD
*
thd
=
get_thd
();
String
buf
;
String
buf
;
val_str
(
&
buf
,
&
buf
);
val_str
(
&
buf
,
&
buf
);
...
@@ -9111,7 +9117,7 @@ void Field_enum::store_type(ulonglong value)
...
@@ -9111,7 +9117,7 @@ void Field_enum::store_type(ulonglong value)
int
Field_enum
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_enum
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
err
=
0
;
int
err
=
0
;
char
buff
[
STRING_BUFFER_USUAL_SIZE
];
char
buff
[
STRING_BUFFER_USUAL_SIZE
];
String
tmpstr
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
String
tmpstr
(
buff
,
sizeof
(
buff
),
&
my_charset_bin
);
...
@@ -9163,7 +9169,7 @@ int Field_enum::store(double nr)
...
@@ -9163,7 +9169,7 @@ int Field_enum::store(double nr)
int
Field_enum
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_enum
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
if
((
ulonglong
)
nr
>
typelib
->
count
||
nr
==
0
)
if
((
ulonglong
)
nr
>
typelib
->
count
||
nr
==
0
)
{
{
...
@@ -9187,7 +9193,7 @@ double Field_enum::val_real(void)
...
@@ -9187,7 +9193,7 @@ double Field_enum::val_real(void)
longlong
Field_enum
::
val_int
(
void
)
longlong
Field_enum
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
return
read_lowendian
(
ptr
,
packlength
);
return
read_lowendian
(
ptr
,
packlength
);
}
}
...
@@ -9294,7 +9300,7 @@ Field *Field_enum::make_new_field(MEM_ROOT *root, TABLE *new_table,
...
@@ -9294,7 +9300,7 @@ Field *Field_enum::make_new_field(MEM_ROOT *root, TABLE *new_table,
int
Field_set
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_set
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
bool
got_warning
=
0
;
bool
got_warning
=
0
;
int
err
=
0
;
int
err
=
0
;
char
*
not_used
;
char
*
not_used
;
...
@@ -9334,7 +9340,7 @@ int Field_set::store(const char *from,size_t length,CHARSET_INFO *cs)
...
@@ -9334,7 +9340,7 @@ int Field_set::store(const char *from,size_t length,CHARSET_INFO *cs)
int
Field_set
::
store
(
longlong
nr
,
bool
unsigned_val
)
int
Field_set
::
store
(
longlong
nr
,
bool
unsigned_val
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
error
=
0
;
int
error
=
0
;
ulonglong
max_nr
;
ulonglong
max_nr
;
...
@@ -9734,7 +9740,7 @@ uint Field_bit::is_equal(Create_field *new_field)
...
@@ -9734,7 +9740,7 @@ uint Field_bit::is_equal(Create_field *new_field)
int
Field_bit
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_bit
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
delta
;
int
delta
;
for
(;
length
&&
!*
from
;
from
++
,
length
--
)
// skip left 0's
for
(;
length
&&
!*
from
;
from
++
,
length
--
)
// skip left 0's
...
@@ -9811,7 +9817,7 @@ double Field_bit::val_real(void)
...
@@ -9811,7 +9817,7 @@ double Field_bit::val_real(void)
longlong
Field_bit
::
val_int
(
void
)
longlong
Field_bit
::
val_int
(
void
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
ulonglong
bits
=
0
;
ulonglong
bits
=
0
;
if
(
bit_len
)
if
(
bit_len
)
{
{
...
@@ -9836,7 +9842,7 @@ longlong Field_bit::val_int(void)
...
@@ -9836,7 +9842,7 @@ longlong Field_bit::val_int(void)
String
*
Field_bit
::
val_str
(
String
*
val_buffer
,
String
*
Field_bit
::
val_str
(
String
*
val_buffer
,
String
*
val_ptr
__attribute__
((
unused
)))
String
*
val_ptr
__attribute__
((
unused
)))
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
char
buff
[
sizeof
(
longlong
)];
char
buff
[
sizeof
(
longlong
)];
uint
length
=
MY_MIN
(
pack_length
(),
sizeof
(
longlong
));
uint
length
=
MY_MIN
(
pack_length
(),
sizeof
(
longlong
));
ulonglong
bits
=
val_int
();
ulonglong
bits
=
val_int
();
...
@@ -9852,7 +9858,7 @@ String *Field_bit::val_str(String *val_buffer,
...
@@ -9852,7 +9858,7 @@ String *Field_bit::val_str(String *val_buffer,
my_decimal
*
Field_bit
::
val_decimal
(
my_decimal
*
deciaml_value
)
my_decimal
*
Field_bit
::
val_decimal
(
my_decimal
*
deciaml_value
)
{
{
ASSERT_COLUMN_MARKED_FOR_READ
;
DBUG_ASSERT
(
marked_for_read
())
;
int2my_decimal
(
E_DEC_FATAL_ERROR
,
val_int
(),
1
,
deciaml_value
);
int2my_decimal
(
E_DEC_FATAL_ERROR
,
val_int
(),
1
,
deciaml_value
);
return
deciaml_value
;
return
deciaml_value
;
}
}
...
@@ -10170,7 +10176,7 @@ Field_bit_as_char::Field_bit_as_char(uchar *ptr_arg, uint32 len_arg,
...
@@ -10170,7 +10176,7 @@ Field_bit_as_char::Field_bit_as_char(uchar *ptr_arg, uint32 len_arg,
int
Field_bit_as_char
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
int
Field_bit_as_char
::
store
(
const
char
*
from
,
size_t
length
,
CHARSET_INFO
*
cs
)
{
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED
;
DBUG_ASSERT
(
marked_for_write_or_computed
())
;
int
delta
;
int
delta
;
uchar
bits
=
(
uchar
)
(
field_length
&
7
);
uchar
bits
=
(
uchar
)
(
field_length
&
7
);
...
...
sql/field.h
View file @
371d6ac1
...
@@ -627,6 +627,9 @@ class Field: public Value_source
...
@@ -627,6 +627,9 @@ class Field: public Value_source
static
void
operator
delete
(
void
*
ptr
,
MEM_ROOT
*
mem_root
)
static
void
operator
delete
(
void
*
ptr
,
MEM_ROOT
*
mem_root
)
{
DBUG_ASSERT
(
0
);
}
{
DBUG_ASSERT
(
0
);
}
bool
marked_for_read
()
const
;
bool
marked_for_write_or_computed
()
const
;
/**
/**
Used by System Versioning.
Used by System Versioning.
*/
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment