From 6ead7828b040ed0442bf0ddb75e6f1b0ca66b291 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Thu, 15 Apr 2010 18:46:45 +0000 Subject: [PATCH] Improve message style for messages associated with not being able to identify the system time zone setting. Per recent discussion. --- src/timezone/pgtz.c | 71 +++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c index 9031b37bb15..d67b7aaab03 100644 --- a/src/timezone/pgtz.c +++ b/src/timezone/pgtz.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.71 2010/04/09 11:49:51 mha Exp $ + * $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.72 2010/04/15 18:46:45 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -498,8 +498,10 @@ identify_system_timezone(void) if (std_zone_name[0] == '\0') { ereport(LOG, - (errmsg("could not determine system time zone, defaulting to \"%s\"", "GMT"), - errhint("You can specify the correct timezone in postgresql.conf."))); + (errmsg("could not determine system time zone"), + errdetail("The PostgreSQL time zone will be set to \"%s\".", + "GMT"), + errhint("You can specify the correct timezone in postgresql.conf."))); return NULL; /* go to GMT */ } @@ -533,9 +535,10 @@ identify_system_timezone(void) (-std_ofs > 0) ? "+" : "", -std_ofs / 3600); ereport(LOG, - (errmsg("could not recognize system timezone, defaulting to \"%s\"", - resultbuf), - errhint("You can specify the correct timezone in postgresql.conf."))); + (errmsg("could not recognize system time zone"), + errdetail("The PostgreSQL time zone will be set to \"%s\".", + resultbuf), + errhint("You can specify the correct timezone in postgresql.conf."))); return resultbuf; } @@ -1076,9 +1079,12 @@ identify_system_timezone(void) if (!tm) { - ereport(WARNING, - (errmsg_internal("could not determine current date/time: localtime failed"))); - return NULL; + ereport(LOG, + (errmsg("could not identify system time zone: localtime() failed"), + errdetail("The PostgreSQL time zone will be set to \"%s\".", + "GMT"), + errhint("You can specify the correct timezone in postgresql.conf."))); + return NULL; /* go to GMT */ } memset(tzname, 0, sizeof(tzname)); @@ -1089,7 +1095,7 @@ identify_system_timezone(void) if (strcmp(tzname, win32_tzmap[i].stdname) == 0 || strcmp(tzname, win32_tzmap[i].dstname) == 0) { - elog(DEBUG4, "TZ \"%s\" matches Windows timezone \"%s\"", + elog(DEBUG4, "TZ \"%s\" matches system time zone \"%s\"", win32_tzmap[i].pgtzname, tzname); return win32_tzmap[i].pgtzname; } @@ -1107,9 +1113,13 @@ identify_system_timezone(void) KEY_READ, &rootKey) != ERROR_SUCCESS) { - ereport(WARNING, - (errmsg_internal("could not open registry key to identify Windows timezone: %i", (int) GetLastError()))); - return NULL; + ereport(LOG, + (errmsg("could not open registry key to identify system time zone: %i", + (int) GetLastError()), + errdetail("The PostgreSQL time zone will be set to \"%s\".", + "GMT"), + errhint("You can specify the correct timezone in postgresql.conf."))); + return NULL; /* go to GMT */ } for (idx = 0;; idx++) @@ -1134,15 +1144,15 @@ identify_system_timezone(void) { if (r == ERROR_NO_MORE_ITEMS) break; - ereport(WARNING, - (errmsg_internal("could not enumerate registry subkeys to identify Windows timezone: %i", (int) r))); + ereport(LOG, + (errmsg_internal("could not enumerate registry subkeys to identify system time zone: %i", (int) r))); break; } if ((r = RegOpenKeyEx(rootKey, keyname, 0, KEY_READ, &key)) != ERROR_SUCCESS) { - ereport(WARNING, - (errmsg_internal("could not open registry subkey to identify Windows timezone: %i", (int) r))); + ereport(LOG, + (errmsg_internal("could not open registry subkey to identify system time zone: %i", (int) r))); break; } @@ -1150,8 +1160,8 @@ identify_system_timezone(void) namesize = sizeof(zonename); if ((r = RegQueryValueEx(key, "Std", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS) { - ereport(WARNING, - (errmsg_internal("could not query value for 'std' to identify Windows timezone \"%s\": %i", + ereport(LOG, + (errmsg_internal("could not query value for key \"std\" to identify system time zone \"%s\": %i", keyname, (int) r))); RegCloseKey(key); continue; /* Proceed to look at the next timezone */ @@ -1167,8 +1177,8 @@ identify_system_timezone(void) namesize = sizeof(zonename); if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS) { - ereport(WARNING, - (errmsg_internal("could not query value for 'dlt' to identify Windows timezone \"%s\": %i", + ereport(LOG, + (errmsg_internal("could not query value for key \"dlt\" to identify system time zone \"%s\": %i", keyname, (int) r))); RegCloseKey(key); continue; /* Proceed to look at the next timezone */ @@ -1194,17 +1204,20 @@ identify_system_timezone(void) if (strcmp(localtzname, win32_tzmap[i].stdname) == 0 || strcmp(localtzname, win32_tzmap[i].dstname) == 0) { - elog(DEBUG4, "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")", + elog(DEBUG4, "TZ \"%s\" matches localized system time zone \"%s\" (\"%s\")", win32_tzmap[i].pgtzname, tzname, localtzname); return win32_tzmap[i].pgtzname; } } } - ereport(WARNING, - (errmsg("could not find a match for Windows timezone \"%s\"", - tzname))); - return NULL; + ereport(LOG, + (errmsg("could not find a match for system time zone \"%s\"", + tzname), + errdetail("The PostgreSQL time zone will be set to \"%s\".", + "GMT"), + errhint("You can specify the correct timezone in postgresql.conf."))); + return NULL; /* go to GMT */ } #endif /* WIN32 */ @@ -1390,7 +1403,7 @@ select_default_timezone(void) return def_tz; ereport(FATAL, - (errmsg("could not select a suitable default timezone"), + (errmsg("could not select a suitable default time zone"), errdetail("It appears that your GMT time zone uses leap seconds. PostgreSQL does not support leap seconds."))); return NULL; /* keep compiler quiet */ } @@ -1414,7 +1427,7 @@ pg_timezone_pre_initialize(void) * seems OK to just use the "lastditch" case provided by tzparse(). */ if (tzparse("GMT", &gmt_timezone_data.state, TRUE) != 0) - elog(FATAL, "could not initialize GMT timezone"); + elog(FATAL, "could not initialize GMT time zone"); strcpy(gmt_timezone_data.TZname, "GMT"); gmt_timezone = &gmt_timezone_data; } @@ -1541,7 +1554,7 @@ pg_tzenumerate_next(pg_tzenum *dir) /* Step into the subdirectory */ if (dir->depth >= MAX_TZDIR_DEPTH - 1) ereport(ERROR, - (errmsg("timezone directory stack overflow"))); + (errmsg_internal("timezone directory stack overflow"))); dir->depth++; dir->dirname[dir->depth] = pstrdup(fullname); dir->dirdesc[dir->depth] = AllocateDir(fullname); -- GitLab