Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5cca35a

Browse files
committed
Make handling of INTERVAL DAY TO MINUTE and INTERVAL DAY TO SECOND input
more consistent with other cases, by having an unlabeled integer fieldbe treated as a number of minutes or seconds respectively. These casesare outside the spec (which insists on full "dd hh:mm" or "dd hh:mm:ss"input respectively), so it's not much help to us in deciding what to do.But with this change, it's uniformly the case that an unlabeled integerwill be considered as being a number of the interval's rightmost field.The change also takes us back to the 8.3 behavior of throwing errorfor certain ambiguous inputs such as INTERVAL '1 2' DAY TO MINUTE.Per recent discussion.
1 parent0dcc73f commit5cca35a

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

‎src/backend/utils/adt/datetime.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.206 2009/06/01 16:55:11 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.207 2009/06/10 05:05:03 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -2917,17 +2917,17 @@ DecodeInterval(char **field, int *ftype, int nf, int range,
29172917
break;
29182918
caseINTERVAL_MASK(HOUR):
29192919
caseINTERVAL_MASK(DAY) |INTERVAL_MASK(HOUR):
2920-
caseINTERVAL_MASK(DAY) |INTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE):
2921-
caseINTERVAL_MASK(DAY) |INTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE) |INTERVAL_MASK(SECOND):
29222920
type=DTK_HOUR;
29232921
break;
29242922
caseINTERVAL_MASK(MINUTE):
29252923
caseINTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE):
2924+
caseINTERVAL_MASK(DAY) |INTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE):
29262925
type=DTK_MINUTE;
29272926
break;
29282927
caseINTERVAL_MASK(SECOND):
2929-
caseINTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE) |INTERVAL_MASK(SECOND):
29302928
caseINTERVAL_MASK(MINUTE) |INTERVAL_MASK(SECOND):
2929+
caseINTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE) |INTERVAL_MASK(SECOND):
2930+
caseINTERVAL_MASK(DAY) |INTERVAL_MASK(HOUR) |INTERVAL_MASK(MINUTE) |INTERVAL_MASK(SECOND):
29312931
type=DTK_SECOND;
29322932
break;
29332933
default:

‎src/test/regress/expected/interval.out

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -466,11 +466,9 @@ SELECT interval '1 2:03:04' day to hour;
466466
(1 row)
467467

468468
SELECT interval '1 2' day to minute;
469-
interval
470-
----------------
471-
1 day 02:00:00
472-
(1 row)
473-
469+
ERROR: invalid input syntax for type interval: "1 2"
470+
LINE 1: SELECT interval '1 2' day to minute;
471+
^
474472
SELECT interval '1 2:03' day to minute;
475473
interval
476474
----------------
@@ -484,11 +482,9 @@ SELECT interval '1 2:03:04' day to minute;
484482
(1 row)
485483

486484
SELECT interval '1 2' day to second;
487-
interval
488-
----------------
489-
1 day 02:00:00
490-
(1 row)
491-
485+
ERROR: invalid input syntax for type interval: "1 2"
486+
LINE 1: SELECT interval '1 2' day to second;
487+
^
492488
SELECT interval '1 2:03' day to second;
493489
interval
494490
----------------
@@ -605,11 +601,9 @@ SELECT interval '1.234' second(2);
605601
(1 row)
606602

607603
SELECT interval '1 2.345' day to second(2);
608-
interval
609-
----------------
610-
1 day 02:20:42
611-
(1 row)
612-
604+
ERROR: invalid input syntax for type interval: "1 2.345"
605+
LINE 1: SELECT interval '1 2.345' day to second(2);
606+
^
613607
SELECT interval '1 2:03' day to second(2);
614608
interval
615609
----------------

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp