184 return static_cast<int64_t
>(
245 (
is_negative() ? (0xFFFFFFU - fraction) : fraction);
256 int64_t signed_micro =
260 bool negative = signed_micro < 0;
261 uint64_t micro = negative ? -signed_micro : signed_micro;
285 uint32_t
second, uint32_t microsec) {
302 static constexpr uint64_t
BITS_HOUR = 0x00007FF000000000;
303 static constexpr uint64_t
BITS_SIGN = 0x0000800000000000;
354 uint32_t hour_arg, uint32_t minute_arg, uint32_t second_arg,
355 uint32_t micro_arg) {
368 uint32_t hour_arg, uint32_t minute_arg, uint32_t second_arg,
369 uint32_t micro_arg, int32_t time_zone_displacement_arg) {
381 Datetime_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg) {
399 Date_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg)
Definition: my_temporal.h:395
Date_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg)
Definition: my_temporal.h:399
Definition: my_temporal.h:339
Datetime_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg, uint32_t hour_arg, uint32_t minute_arg, uint32_t second_arg, uint32_t micro_arg, int32_t time_zone_displacement_arg)
Definition: my_temporal.h:367
Datetime_val()
Definition: my_temporal.h:341
Datetime_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg)
Definition: my_temporal.h:381
Datetime_val(uint32_t year_arg, uint32_t month_arg, uint32_t day_arg, uint32_t hour_arg, uint32_t minute_arg, uint32_t second_arg, uint32_t micro_arg)
Definition: my_temporal.h:353
Time_val is a temporal type that represents only time.
Definition: my_temporal.h:55
uint32_t minute() const
Definition: my_temporal.h:95
uint32_t second() const
Definition: my_temporal.h:99
static constexpr int TIME_SHIFT_MINUTE
Definition: my_temporal.h:305
static constexpr int TIME_SHIFT_SECOND
Definition: my_temporal.h:304
Time_val(bool negative, uint32_t second, uint32_t microsecond)
Definition: my_temporal.h:79
void set_zero()
Set zero time.
Definition: my_temporal.h:124
static constexpr const uint32_t TIME_MAX_SECOND
Definition: my_temporal.h:292
bool is_extreme_value(bool positive) const
Check against extreme values.
Definition: my_temporal.h:119
Time_val(const MYSQL_TIME &mtime)
Definition: my_temporal.h:84
bool add_nanoseconds_round(const int64_t nanoseconds)
Definition: my_temporal.h:213
static constexpr uint64_t TIME_MULT_MINUTE
Definition: my_temporal.h:296
uint32_t microsecond() const
Definition: my_temporal.h:103
bool operator==(const Time_val rhs) const
Definition: my_temporal.h:131
int64_t for_comparison() const
Definition: my_temporal.h:116
static uint32_t unsigned_seconds(uint32_t hour, uint32_t minute, uint32_t second)
Definition: my_temporal.h:279
static constexpr uint64_t TIME_MULT_SECOND
Definition: my_temporal.h:295
Time_val(bool negative, uint32_t hour, uint32_t minute, uint32_t second, uint32_t microsecond)
Definition: my_temporal.h:59
static bool make_time(bool negative, uint32_t hour, uint32_t minute, uint32_t second, uint32_t microsecond, Time_val *time)
Static functions for creation.
Definition: my_temporal.h:161
static constexpr int TIME_SHIFT_HOUR
Definition: my_temporal.h:306
bool add_seconds(int32_t seconds)
Definition: my_temporal.h:248
bool add_microseconds(int64_t mu)
Definition: my_temporal.h:255
static constexpr uint64_t MAX_TIME_MICROSEC
Definition: my_temporal.h:319
static constexpr uint64_t MAX_TIME_VALUE
Definition: my_temporal.h:308
uint32_t hour() const
Definition: my_temporal.h:91
uint64_t m_value
A TIME value is stored in bit coded fields in a 64 bit unsigned value.
Definition: my_temporal.h:336
static constexpr uint64_t BITS_MINUTE
Definition: my_temporal.h:301
int compare(const Time_val arg) const
Definition: my_temporal.h:112
static constexpr uint64_t TIME_MULT_HOUR
Definition: my_temporal.h:297
Time_val(int64_t val)
Definition: my_temporal.h:240
static uint64_t unsigned_microsec(uint32_t hour, uint32_t minute, uint32_t second, uint32_t microsec)
Definition: my_temporal.h:284
void set_extreme_value(bool negative)
Set extreme value.
Definition: my_temporal.h:127
static constexpr uint64_t MIN_TIME_VALUE
Definition: my_temporal.h:313
void set_microsecond(uint32_t fraction)
Set microsecond part of time value.
Definition: my_temporal.h:243
int64_t to_microseconds() const
Definition: my_temporal.h:183
Time_val()
Definition: my_temporal.h:57
static constexpr const uint32_t TIME_MAX_MICROSEC
Definition: my_temporal.h:293
static constexpr uint64_t BITS_SIGN
Definition: my_temporal.h:303
static constexpr uint64_t BITS_SECOND
Definition: my_temporal.h:300
static constexpr uint64_t BITS_MICROSEC
Definition: my_temporal.h:299
static constexpr uint64_t BITS_HOUR
Definition: my_temporal.h:302
static constexpr const uint32_t TIME_MAX_HOUR
Definition: my_temporal.h:290
bool operator<(const Time_val rhs) const
Definition: my_temporal.h:133
bool is_negative() const
Definition: my_temporal.h:90
bool is_valid() const
Definition: my_temporal.h:272
int32_t to_seconds() const
Definition: my_temporal.h:178
static constexpr const uint32_t TIME_MAX_MINUTE
Definition: my_temporal.h:291
static const std::string dec("DECRYPTION")
void adjust_fraction(uint32_t decimals, bool round)
Definition: my_temporal.cc:58
bool add(Time_val tv, bool subtract)
Add a time value to another time value, or subtract it.
Definition: my_temporal.cc:88
static Time_val strip_date(const MYSQL_TIME &mt)
Creates a Time_val from a date_time by extracting only the time fields.
Definition: my_temporal.cc:158
int64_t to_int_truncated() const
base100 representation without microsecond, '-12:34:56.999999' is returned as -123456
Definition: my_temporal.cc:268
double to_double() const
base100 representation with microseconds, returned as double precision float
Definition: my_temporal.cc:273
void store_time(uint8_t *ptr, uint32_t dec) const
Convert server time value to storage engine interface format.
Definition: my_temporal.cc:178
uint32_t actual_decimals() const
Definition: my_temporal.cc:50
std::string to_string() const
Definition: my_temporal.cc:285
int64_t to_int_rounded() const
base100 representation without microsecond, but rounded '-12:34:56.999999' is returned as -123457
Definition: my_temporal.cc:261
static void load_time(const uint8_t *ptr, uint32_t dec, Time_val *time)
Convert from storage engine interface time format to server time value.
Definition: my_temporal.cc:220
bool is_adjusted(uint32_t decimals) const
Definition: my_temporal.cc:45
@ MYSQL_TIMESTAMP_TIME
Stores hour, minute, second and microsecond.
Definition: mysql_time.h:60
@ MYSQL_TIMESTAMP_DATETIME_TZ
A temporary type for DATETIME or TIMESTAMP types equipped with time zone information.
Definition: mysql_time.h:67
@ MYSQL_TIMESTAMP_DATETIME
Stores all date and time components.
Definition: mysql_time.h:57
@ MYSQL_TIMESTAMP_DATE
Stores year, month and day components.
Definition: mysql_time.h:50
struct MYSQL_TIME MYSQL_TIME
Interface for low level time utilities.
constexpr const int MINS_PER_HOUR
Definition: my_time.h:137
constexpr const int SECS_PER_MIN
Definition: my_time.h:136
constexpr const int SECS_PER_HOUR
Definition: my_time.h:142
std::chrono::seconds seconds
Definition: authorize_manager.cc:68
ValueType abs(const ValueType v1, const ValueType v2)
Definition: gtid.h:75
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:418
Struct representing a duration.
Definition: my_time.h:219
Definition: mysql_time.h:82
int time_zone_displacement
The time zone displacement, specified in seconds.
Definition: mysql_time.h:88
unsigned long second_part
microseconds
Definition: mysql_time.h:84
unsigned int second
Definition: mysql_time.h:83
enum enum_mysql_timestamp_type time_type
Definition: mysql_time.h:86
unsigned int hour
Definition: mysql_time.h:83
unsigned int minute
Definition: mysql_time.h:83
unsigned int month
Definition: mysql_time.h:83
unsigned int day
Definition: mysql_time.h:83
bool neg
Definition: mysql_time.h:85
unsigned int year
Definition: mysql_time.h:83