My Project
Public Member Functions | Protected Member Functions | Protected Attributes
Field_temporal Class Reference
Inheritance diagram for Field_temporal:
Field Field_temporal_with_date Field_time_common Field_newdate Field_temporal_with_date_and_time Field_time Field_timef Field_datetime Field_temporal_with_date_and_timef Field_timestamp Field_datetimef Field_timestampf

List of all members.

Public Member Functions

 Field_temporal (uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, enum utype unireg_check_arg, const char *field_name_arg, uint32 len_arg, uint8 dec_arg)
 Field_temporal (bool maybe_null_arg, const char *field_name_arg, uint32 len_arg, uint8 dec_arg)
virtual Item_result result_type () const
virtual uint32 max_display_length ()
virtual bool str_needs_quotes ()
virtual uint is_equal (Create_field *new_field)
Item_result numeric_context_result_type () const
enum Item_result cmp_type () const
enum Derivation derivation () const
uint repertoire () const
const CHARSET_INFO * charset () const
bool can_be_compared_as_longlong () const
bool binary () const
type_conversion_status store (const char *str, uint len, const CHARSET_INFO *cs)
type_conversion_status store_decimal (const my_decimal *decimal)
type_conversion_status store (longlong nr, bool unsigned_val)
type_conversion_status store (double nr)
double val_real ()
my_decimalval_decimal (my_decimal *decimal_value)

Protected Member Functions

uint8 normalize_dec (uint8 dec_arg)
virtual type_conversion_status store_internal (const MYSQL_TIME *ltime, int *error)=0
virtual type_conversion_status store_internal_with_round (MYSQL_TIME *ltime, int *warnings)=0
type_conversion_status store_lldiv_t (const lldiv_t *lld, int *warning)
virtual bool convert_str_to_TIME (const char *str, uint len, const CHARSET_INFO *cs, MYSQL_TIME *ltime, MYSQL_TIME_STATUS *status)=0
virtual type_conversion_status convert_number_to_TIME (longlong nr, bool unsigned_val, int nanoseconds, MYSQL_TIME *ltime, int *warning)=0
longlong convert_number_to_datetime (longlong nr, bool unsigned_val, MYSQL_TIME *ltime, int *warning)
void set_warnings (ErrConvString str, int warnings)
virtual ulonglong date_flags (const THD *thd)
ulonglong date_flags ()
void set_datetime_warning (Sql_condition::enum_warning_level level, uint code, ErrConvString str, timestamp_type ts_type, int cuted_increment)

Protected Attributes

uint8 dec

Constructor & Destructor Documentation

Field_temporal::Field_temporal ( uchar *  ptr_arg,
uchar *  null_ptr_arg,
uchar  null_bit_arg,
enum utype  unireg_check_arg,
const char *  field_name_arg,
uint32  len_arg,
uint8  dec_arg 
) [inline]

Constructor for Field_temporal

Parameters:
ptr_argSee Field definition
null_ptr_argSee Field definition
null_bit_argSee Field definition
unireg_check_argSee Field definition
field_name_argSee Field definition
len_argNumber of characters in the integer part.
dec_argNumber of second fraction digits, 0..6.
Field_temporal::Field_temporal ( bool  maybe_null_arg,
const char *  field_name_arg,
uint32  len_arg,
uint8  dec_arg 
) [inline]

Constructor for Field_temporal

Parameters:
maybe_null_argSee Field definition
field_name_argSee Field definition
len_argNumber of characters in the integer part.
dec_argNumber of second fraction digits, 0..6

Member Function Documentation

longlong Field_temporal::convert_number_to_datetime ( longlong  nr,
bool  unsigned_val,
MYSQL_TIME *  ltime,
int *  warnings 
) [protected]

Convert an integer number into MYSQL_TIME, according to the field type.

Parameters:
INnr Number
INunsigned_val SIGNED/UNSIGNED flag
OUTltime The value is stored here
Return values:
falseOn success
trueOn error
-1Timestamp with wrong values
anythingelse DATETIME as integer in YYYYMMDDHHMMSS format
virtual type_conversion_status Field_temporal::convert_number_to_TIME ( longlong  nr,
bool  unsigned_val,
int  nanoseconds,
MYSQL_TIME *  ltime,
int *  warning 
) [protected, pure virtual]

Convert a number with fractional part with nanosecond precision into MYSQL_TIME, according to the field type. Nanoseconds are rounded to milliseconds and added to ltime->second_part.

Parameters:
INnr Number
INunsigned_val SIGNED/UNSIGNED flag
INnanoseconds Fractional part in nanoseconds
OUTltime The value is stored here
OUTstatus Conversion status
Return values:
falseOn success
trueOn error

Implemented in Field_time_common, and Field_temporal_with_date.

virtual bool Field_temporal::convert_str_to_TIME ( const char *  str,
uint  len,
const CHARSET_INFO *  cs,
MYSQL_TIME *  ltime,
MYSQL_TIME_STATUS *  status 
) [protected, pure virtual]

Convert a string to MYSQL_TIME, according to the field type.

Parameters:
INstr String
INlen String length
INcs String character set
OUTltime The value is stored here
OUTstatus Conversion status
Return values:
falseConversion went fine, ltime contains a valid time
trueConversion failed, ltime was reset and contains nothing

Implemented in Field_time_common, and Field_temporal_with_date.

virtual ulonglong Field_temporal::date_flags ( const THD *  thd) [inline, protected, virtual]

Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime().

Flags depend on the session sql_mode settings, such as MODE_NO_ZERO_DATE, MODE_NO_ZERO_IN_DATE. Also, Field_newdate, Field_datetime, Field_datetimef add TIME_FUZZY_DATE to the session sql_mode settings, to allow relaxed date format, while Field_timestamp, Field_timestampf do not.

Parameters:
thdTHD
Return values:
sql_modeflags mixed with the field type flags.

Reimplemented in Field_datetimef, Field_datetime, Field_newdate, Field_timestampf, and Field_timestamp.

ulonglong Field_temporal::date_flags ( ) [inline, protected]

Flags that are passed as "flag" argument to check_date(), number_to_datetime(), str_to_datetime(). Similar to the above when we don't have a THD value.

uint Field_temporal::is_equal ( Create_field new_field) [virtual]

Whether a field being created is compatible with a existing one.

Used by the ALTER TABLE code to evaluate whether the new definition of a table is compatible with the old definition so that it can determine if data needs to be copied over (table data change).

Reimplemented from Field.

uint8 Field_temporal::normalize_dec ( uint8  dec_arg) [inline, protected]

Adjust number of decimal digits from NOT_FIXED_DEC to DATETIME_MAX_DECIMALS

Item_result Field_temporal::numeric_context_result_type ( ) const [inline, virtual]

Returns Item_result type of a field when it appears in numeric context such as: SELECT time_column + 1; SELECT SUM(time_column); Examples:

  • a column of type TIME, DATETIME, TIMESTAMP act as INT.
  • a column of type TIME(1), DATETIME(1), TIMESTAMP(1) act as DECIMAL with 1 fractional digits.

Reimplemented from Field.

void Field_temporal::set_datetime_warning ( Sql_condition::enum_warning_level  level,
uint  code,
ErrConvString  val,
timestamp_type  ts_type,
int  cut_increment 
) [protected]

Set a single warning using make_truncated_value_warning().

Parameters:
INlevel Warning level (error, warning, note)
INcode Warning code
INstr Warning parameter
INts_type Timestamp type (time, date, datetime, none)
INcuted_inctement Incrementing of cut field counter

Produce warning or note about double datetime data saved into field.

Parameters:
levellevel of message (Note/Warning/Error)
codeerror code of message to be produced
valerror parameter (the value)
ts_typetype of datetime value (datetime/date/time)
cut_incrementwhenever we should increase cut fields count
Note:
This function will always produce some warning but won't increase cut fields counter if count_cuted_fields == FIELD_CHECK_IGNORE for current thread.
void Field_temporal::set_warnings ( ErrConvString  str,
int  warnings 
) [protected]

Set a warning according to warning bit flag vector. Multiple warnings are possible at the same time. Every warning in the bit vector is set by an individual set_datetime_warning() call.

Parameters:
strWarning parameter
warningsWarning bit flag

Set warnings from a warning vector. Note, multiple warnings can be set at the same time.

Parameters:
strValue.
warningsWarning vector.
type_conversion_status Field_temporal::store ( const char *  str,
uint  len,
const CHARSET_INFO *  cs 
) [virtual]

Store string into a date/time/datetime field.

Parameters:
fromDate/time string
lenLength of the string
csCharacter set of the string
Return values:
TYPE_OKStorage of value went fine without warnings or errors
!TYPE_OKWarning/error as indicated by type_conversion_status enum value

Implements Field.

virtual type_conversion_status Field_temporal::store_internal ( const MYSQL_TIME *  ltime,
int *  error 
) [protected, pure virtual]

Low level routine to store a MYSQL_TIME value into a field. The value must be already properly rounded or truncated and checked for being a valid TIME/DATE/DATETIME value.

Parameters:
INltime MYSQL_TIME value.
OUTerror Error flag vector, set in case of error.
Return values:
falseIn case of success.
trueIn case of error.

Implemented in Field_datetimef, Field_datetime, Field_timef, Field_time, Field_time_common, Field_newdate, Field_timestampf, and Field_timestamp.

virtual type_conversion_status Field_temporal::store_internal_with_round ( MYSQL_TIME *  ltime,
int *  warnings 
) [protected, pure virtual]

Low level routine to store a MYSQL_TIME value into a field with rounding according to the field decimals() value.

Parameters:
INltime MYSQL_TIME value.
OUTerror Error flag vector, set in case of error.
Return values:
falseIn case of success.
trueIn case of error.

Implemented in Field_time_common, and Field_temporal_with_date.

type_conversion_status Field_temporal::store_lldiv_t ( const lldiv_t *  lld,
int *  warning 
) [protected]

Store a temporal value in lldiv_t into a field, with rounding according to the field decimals() value.

Parameters:
INlld Temporal value.
OUTwarning Warning flag vector.
Return values:
falseIn case of success.
trueIn case of error.

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines