Add hint for to_char(interval) invalid format specifications.
authorBruce Momjian
Thu, 18 Aug 2005 13:43:08 +0000 (13:43 +0000)
committerBruce Momjian
Thu, 18 Aug 2005 13:43:08 +0000 (13:43 +0000)
src/backend/utils/adt/formatting.c

index 288cafb43c7ec1db604219f01d5cd43b1a3e99f0..1e3553816d7797c0d12a27e197aa9cdb49c70993 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * formatting.c
  *
- * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.98 2005/08/18 04:37:08 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.99 2005/08/18 13:43:08 momjian Exp $
  *
  *
  *  Portions Copyright (c) 1999-2005, PostgreSQL Global Development Group
@@ -421,26 +421,27 @@ typedef struct TmToChar
 #define tmtcFsec(_X)   ((_X)->fsec)
 
 #define ZERO_tm(_X) \
-   do {    \
-       (_X)->tm_sec  = (_X)->tm_year = (_X)->tm_min = (_X)->tm_wday = \
-       (_X)->tm_hour = (_X)->tm_yday = (_X)->tm_isdst = 0; \
-       (_X)->tm_mday = (_X)->tm_mon  = 1; \
-   } while(0)
+do {   \
+   (_X)->tm_sec  = (_X)->tm_year = (_X)->tm_min = (_X)->tm_wday = \
+   (_X)->tm_hour = (_X)->tm_yday = (_X)->tm_isdst = 0; \
+   (_X)->tm_mday = (_X)->tm_mon  = 1; \
+} while(0)
 
 #define ZERO_tmtc(_X) \
-   do { \
-       ZERO_tm( tmtcTm(_X) ); \
-       tmtcFsec(_X) = 0; \
-       tmtcTzn(_X) = NULL; \
-   } while(0)
+do { \
+   ZERO_tm( tmtcTm(_X) ); \
+   tmtcFsec(_X) = 0; \
+   tmtcTzn(_X) = NULL; \
+} while(0)
 
 #define INVALID_FOR_INTERVAL  \
-   do { \
-       if (is_interval) \
-           ereport(ERROR, \
-                   (errcode(ERRCODE_INVALID_DATETIME_FORMAT), \
-                    errmsg("invalid format specification for an interval value"))); \
-   } while(0)
+do { \
+   if (is_interval) \
+       ereport(ERROR, \
+               (errcode(ERRCODE_INVALID_DATETIME_FORMAT), \
+                errmsg("invalid format specification for an interval value"), \
+                errhint("Intervals are not tied to specific calendar dates."))); \
+} while(0)
    
 /*****************************************************************************
  *         KeyWords definition & action