Whilst poking at bug #4702 I noticed that PG CVS HEAD rejects use of
AD/BC notation, as well as CC (separate century) fields, in combination
with ISO-style day numbers. I don't see the point of this. It's
historically inaccurate, no doubt, but so is use of Gregorian counting.
So I suggest the attached fix. Does this make anyone unhappy?
regards, tom lane
Index: src/backend/utils/adt/formatting.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v
retrieving revision 1.155
diff -c -r1.155 formatting.c
*** src/backend/utils/adt/formatting.c 12 Mar 2009 00:53:25 -0000 1.155
--- src/backend/utils/adt/formatting.c 14 Mar 2009 17:37:05 -0000
***************
*** 709,721 **** */ static const KeyWord DCH_keywords[] = { /* name, len, id, is_digit, date_mode */
! {"A.D.", 4, DCH_A_D, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* A */ {"A.M.", 4, DCH_A_M, FALSE,
FROM_CHAR_DATE_NONE},
! {"AD", 2, DCH_AD, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"AM", 2, DCH_AM, FALSE, FROM_CHAR_DATE_NONE},
! {"B.C.", 4, DCH_B_C, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* B */
! {"BC", 2, DCH_BC, FALSE, FROM_CHAR_DATE_GREGORIAN},
! {"CC", 2, DCH_CC, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* C */ {"DAY", 3, DCH_DAY, FALSE,
FROM_CHAR_DATE_NONE}, /* D */ {"DDD", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"DD", 2, DCH_DD,
TRUE,FROM_CHAR_DATE_GREGORIAN},
--- 709,721 ---- */ static const KeyWord DCH_keywords[] = { /* name, len, id, is_digit, date_mode */
! {"A.D.", 4, DCH_A_D, FALSE, FROM_CHAR_DATE_NONE}, /* A */ {"A.M.", 4, DCH_A_M, FALSE,
FROM_CHAR_DATE_NONE},
! {"AD", 2, DCH_AD, FALSE, FROM_CHAR_DATE_NONE}, {"AM", 2, DCH_AM, FALSE, FROM_CHAR_DATE_NONE},
! {"B.C.", 4, DCH_B_C, FALSE, FROM_CHAR_DATE_NONE}, /* B */
! {"BC", 2, DCH_BC, FALSE, FROM_CHAR_DATE_NONE},
! {"CC", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* C */ {"DAY", 3, DCH_DAY, FALSE,
FROM_CHAR_DATE_NONE}, /* D */ {"DDD", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"DD", 2, DCH_DD,
TRUE,FROM_CHAR_DATE_GREGORIAN},
***************
*** 757,769 **** {"YYY", 3, DCH_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"YY", 2, DCH_YY, TRUE,
FROM_CHAR_DATE_GREGORIAN}, {"Y", 1, DCH_Y, TRUE, FROM_CHAR_DATE_GREGORIAN},
! {"a.d.", 4, DCH_a_d, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* a */ {"a.m.", 4, DCH_a_m, FALSE,
FROM_CHAR_DATE_NONE},
! {"ad", 2, DCH_ad, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"am", 2, DCH_am, FALSE, FROM_CHAR_DATE_NONE},
! {"b.c.", 4, DCH_b_c, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* b */
! {"bc", 2, DCH_bc, FALSE, FROM_CHAR_DATE_GREGORIAN},
! {"cc", 2, DCH_CC, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* c */ {"day", 3, DCH_day, FALSE,
FROM_CHAR_DATE_NONE}, /* d */ {"ddd", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"dd", 2, DCH_DD,
TRUE,FROM_CHAR_DATE_GREGORIAN},
--- 757,769 ---- {"YYY", 3, DCH_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"YY", 2, DCH_YY, TRUE,
FROM_CHAR_DATE_GREGORIAN}, {"Y", 1, DCH_Y, TRUE, FROM_CHAR_DATE_GREGORIAN},
! {"a.d.", 4, DCH_a_d, FALSE, FROM_CHAR_DATE_NONE}, /* a */ {"a.m.", 4, DCH_a_m, FALSE,
FROM_CHAR_DATE_NONE},
! {"ad", 2, DCH_ad, FALSE, FROM_CHAR_DATE_NONE}, {"am", 2, DCH_am, FALSE, FROM_CHAR_DATE_NONE},
! {"b.c.", 4, DCH_b_c, FALSE, FROM_CHAR_DATE_NONE}, /* b */
! {"bc", 2, DCH_bc, FALSE, FROM_CHAR_DATE_NONE},
! {"cc", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* c */ {"day", 3, DCH_day, FALSE,
FROM_CHAR_DATE_NONE}, /* d */ {"ddd", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"dd", 2, DCH_DD,
TRUE,FROM_CHAR_DATE_GREGORIAN},