Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
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
Abuhujair Javed
Postgres FD Implementation
Commits
81322fc4
Commit
81322fc4
authored
3 years ago
by
John Naylor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix division by zero error in date_bin
Bauyrzhan Sakhariyev, via Github Backpatch to v14
parent
b1c1b7af
REL_14_STABLE
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
22 additions
and
0 deletions
+22
-0
src/backend/utils/adt/timestamp.c
src/backend/utils/adt/timestamp.c
+10
-0
src/test/regress/expected/timestamp.out
src/test/regress/expected/timestamp.out
+3
-0
src/test/regress/expected/timestamptz.out
src/test/regress/expected/timestamptz.out
+3
-0
src/test/regress/sql/timestamp.sql
src/test/regress/sql/timestamp.sql
+3
-0
src/test/regress/sql/timestamptz.sql
src/test/regress/sql/timestamptz.sql
+3
-0
No files found.
src/backend/utils/adt/timestamp.c
View file @
81322fc4
...
...
@@ -3843,6 +3843,11 @@ timestamp_bin(PG_FUNCTION_ARGS)
stride_usecs
=
stride
->
day
*
USECS_PER_DAY
+
stride
->
time
;
if
(
stride_usecs
==
0
)
ereport
(
ERROR
,
(
errcode
(
ERRCODE_DATETIME_VALUE_OUT_OF_RANGE
),
errmsg
(
"stride cannot equal zero"
)));
tm_diff
=
timestamp
-
origin
;
tm_delta
=
tm_diff
-
tm_diff
%
stride_usecs
;
...
...
@@ -4021,6 +4026,11 @@ timestamptz_bin(PG_FUNCTION_ARGS)
stride_usecs
=
stride
->
day
*
USECS_PER_DAY
+
stride
->
time
;
if
(
stride_usecs
==
0
)
ereport
(
ERROR
,
(
errcode
(
ERRCODE_DATETIME_VALUE_OUT_OF_RANGE
),
errmsg
(
"stride cannot equal zero"
)));
tm_diff
=
timestamp
-
origin
;
tm_delta
=
tm_diff
-
tm_diff
%
stride_usecs
;
...
...
This diff is collapsed.
Click to expand it.
src/test/regress/expected/timestamp.out
View file @
81322fc4
...
...
@@ -704,6 +704,9 @@ SELECT date_bin('5 months'::interval, timestamp '2020-02-01 01:01:01', timestamp
ERROR: timestamps cannot be binned into intervals containing months or years
SELECT date_bin('5 years'::interval, timestamp '2020-02-01 01:01:01', timestamp '2001-01-01');
ERROR: timestamps cannot be binned into intervals containing months or years
-- disallow zero intervals
SELECT date_bin('0 days'::interval, timestamp '1970-01-01 01:00:00' , timestamp '1970-01-01 00:00:00');
ERROR: stride cannot equal zero
-- Test casting within a BETWEEN qualifier
SELECT d1 - timestamp without time zone '1997-01-02' AS diff
FROM TIMESTAMP_TBL
...
...
This diff is collapsed.
Click to expand it.
src/test/regress/expected/timestamptz.out
View file @
81322fc4
...
...
@@ -748,6 +748,9 @@ SELECT date_bin('5 months'::interval, timestamp with time zone '2020-02-01 01:01
ERROR: timestamps cannot be binned into intervals containing months or years
SELECT date_bin('5 years'::interval, timestamp with time zone '2020-02-01 01:01:01+00', timestamp with time zone '2001-01-01+00');
ERROR: timestamps cannot be binned into intervals containing months or years
-- disallow zero intervals
SELECT date_bin('0 days'::interval, timestamp with time zone '1970-01-01 01:00:00+00' , timestamp with time zone '1970-01-01 00:00:00+00');
ERROR: stride cannot equal zero
-- Test casting within a BETWEEN qualifier
SELECT d1 - timestamp with time zone '1997-01-02' AS diff
FROM TIMESTAMPTZ_TBL
...
...
This diff is collapsed.
Click to expand it.
src/test/regress/sql/timestamp.sql
View file @
81322fc4
...
...
@@ -263,6 +263,9 @@ SELECT date_bin('5 min'::interval, timestamp '2020-02-01 01:01:01', timestamp '2
SELECT
date_bin
(
'5 months'
::
interval
,
timestamp
'2020-02-01 01:01:01'
,
timestamp
'2001-01-01'
);
SELECT
date_bin
(
'5 years'
::
interval
,
timestamp
'2020-02-01 01:01:01'
,
timestamp
'2001-01-01'
);
-- disallow zero intervals
SELECT
date_bin
(
'0 days'
::
interval
,
timestamp
'1970-01-01 01:00:00'
,
timestamp
'1970-01-01 00:00:00'
);
-- Test casting within a BETWEEN qualifier
SELECT
d1
-
timestamp
without
time
zone
'1997-01-02'
AS
diff
FROM
TIMESTAMP_TBL
...
...
This diff is collapsed.
Click to expand it.
src/test/regress/sql/timestamptz.sql
View file @
81322fc4
...
...
@@ -238,6 +238,9 @@ SELECT date_bin('5 min'::interval, timestamptz '2020-02-01 01:01:01+00', timesta
SELECT
date_bin
(
'5 months'
::
interval
,
timestamp
with
time
zone
'2020-02-01 01:01:01+00'
,
timestamp
with
time
zone
'2001-01-01+00'
);
SELECT
date_bin
(
'5 years'
::
interval
,
timestamp
with
time
zone
'2020-02-01 01:01:01+00'
,
timestamp
with
time
zone
'2001-01-01+00'
);
-- disallow zero intervals
SELECT
date_bin
(
'0 days'
::
interval
,
timestamp
with
time
zone
'1970-01-01 01:00:00+00'
,
timestamp
with
time
zone
'1970-01-01 00:00:00+00'
);
-- Test casting within a BETWEEN qualifier
SELECT
d1
-
timestamp
with
time
zone
'1997-01-02'
AS
diff
FROM
TIMESTAMPTZ_TBL
...
...
This diff is collapsed.
Click to expand it.
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