Skip to content

Commit 9e9e387

Browse files
committed
Fix bug in our code when using to_timestamp() or to_date() without "TM".
Assume "TM" when input fields are variable-length, like month or day names. This matches Oracle behavior.
1 parent aec4cf1 commit 9e9e387

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

src/backend/utils/adt/formatting.c

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* -----------------------------------------------------------------------
22
* formatting.c
33
*
4-
* $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.118 2007/01/12 23:34:54 tgl Exp $
4+
* $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.119 2007/02/08 03:22:28 momjian Exp $
55
*
66
*
77
* Portions Copyright (c) 1999-2007, PostgreSQL Global Development Group
@@ -2093,10 +2093,7 @@ dch_date(int arg, char *inout, int suf, bool is_to_char, bool is_interval,
20932093
{
20942094
tmfc->mm = seq_search(inout, months_full, ONE_UPPER, FULL_SIZ, &len) + 1;
20952095
CHECK_SEQ_SEARCH(len, "MONTH/Month/month");
2096-
if (S_FM(suf))
2097-
return len;
2098-
else
2099-
return 9;
2096+
return len;
21002097
}
21012098
else if (arg == DCH_MON || arg == DCH_Mon || arg == DCH_mon)
21022099
{
@@ -2108,10 +2105,7 @@ dch_date(int arg, char *inout, int suf, bool is_to_char, bool is_interval,
21082105
{
21092106
tmfc->d = seq_search(inout, days, ONE_UPPER, FULL_SIZ, &len);
21102107
CHECK_SEQ_SEARCH(len, "DAY/Day/day");
2111-
if (S_FM(suf))
2112-
return len;
2113-
else
2114-
return 9;
2108+
return len;
21152109
}
21162110
else if (arg == DCH_DY || arg == DCH_Dy || arg == DCH_dy)
21172111
{
@@ -2636,10 +2630,7 @@ dch_date(int arg, char *inout, int suf, bool is_to_char, bool is_interval,
26362630
{
26372631
tmfc->mm = 12 - seq_search(inout, rm_months_upper, ALL_UPPER, FULL_SIZ, &len);
26382632
CHECK_SEQ_SEARCH(len, "RM");
2639-
if (S_FM(suf))
2640-
return len;
2641-
else
2642-
return 4;
2633+
return len;
26432634
}
26442635
break;
26452636
case DCH_rm:
@@ -2655,10 +2646,7 @@ dch_date(int arg, char *inout, int suf, bool is_to_char, bool is_interval,
26552646
{
26562647
tmfc->mm = 12 - seq_search(inout, rm_months_lower, ALL_LOWER, FULL_SIZ, &len);
26572648
CHECK_SEQ_SEARCH(len, "rm");
2658-
if (S_FM(suf))
2659-
return len;
2660-
else
2661-
return 4;
2649+
return len;
26622650
}
26632651
break;
26642652
case DCH_W:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy