mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Refactor timestamp2timestamptz_opt_error()
While casting from timestamp to timestamptz we do timestamp2tm() then tm2timestamp(). This commit eliminates call to tm2timestamp(). Instead, it directly applies timezone offset to the original timestamp value. That makes upcoming datetime overflow handling in jsonpath easier. That should also save us some CPU cycles. Discussion: https://postgr.es/m/CAPpHfdvRPRh_mTGar5WmDeRZ%3DU5dOXHdxspYYD%3D76m3knNGjXA%40mail.gmail.com Author: Alexander Korotkov Reviewed-by: Tom Lane
This commit is contained in:
parent
db477b691d
commit
a6888fde7f
@ -5210,8 +5210,17 @@ timestamp2timestamptz_opt_error(Timestamp timestamp, bool *have_error)
|
||||
{
|
||||
tz = DetermineTimeZoneOffset(tm, session_timezone);
|
||||
|
||||
if (!tm2timestamp(tm, fsec, &tz, &result))
|
||||
result = dt2local(timestamp, -tz);
|
||||
|
||||
if (IS_VALID_TIMESTAMP(result))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
else if (have_error)
|
||||
{
|
||||
*have_error = true;
|
||||
return (TimestampTz) 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (have_error)
|
||||
|
Loading…
x
Reference in New Issue
Block a user