Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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)