Log Message:
-----------
pg_postmaster_starttime for win32
Modified Files:
--------------
pgadmin-tools/support:
admin.sql.in (r1.2 -> r1.3)
misc.c (r1.4 -> r1.5)
Index: admin.sql.in
===================================================================
RCS file: /projects/pgadmin-tools/support/admin.sql.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lsupport/admin.sql.in -Lsupport/admin.sql.in -u -w -r1.2 -r1.3
--- support/admin.sql.in
+++ support/admin.sql.in
@@ -68,6 +68,10 @@
LANGUAGE C STABLE STRICT;
*/
+CREATE FUNCTION pg_postmaster_starttime() RETURNS timestamp
+ AS 'MODULE_PATHNAME', 'pg_postmaster_starttime'
+ LANGUAGE C VOLATILE STRICT;
+
CREATE FUNCTION pg_logdir_ls() RETURNS setof record
AS 'MODULE_PATHNAME', 'pg_logdir_ls'
LANGUAGE C VOLATILE STRICT;
Index: misc.c
===================================================================
RCS file: /projects/pgadmin-tools/support/misc.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsupport/misc.c -Lsupport/misc.c -u -w -r1.4 -r1.5
--- support/misc.c
+++ support/misc.c
@@ -34,11 +34,12 @@
Datum pg_reload_conf(PG_FUNCTION_ARGS);
Datum pg_logfile_rotate(PG_FUNCTION_ARGS);
Datum pg_logdir_ls(PG_FUNCTION_ARGS);
+Datum pg_postmaster_starttime(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(pg_reload_conf);
PG_FUNCTION_INFO_V1(pg_logfile_rotate);
PG_FUNCTION_INFO_V1(pg_logdir_ls);
-
+PG_FUNCTION_INFO_V1(pg_postmaster_starttime);
Datum
pg_reload_conf(PG_FUNCTION_ARGS)
{
@@ -198,3 +199,48 @@
SRF_RETURN_DONE(funcctx);
}
+
+Datum pg_postmaster_starttime(PG_FUNCTION_ARGS)
+{
+ Timestamp result;
+ struct pg_tm tm;
+
+ if (!superuser())
+ ereport(ERROR,
+ (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+ (errmsg("only superuser can query the postmaster
starttime"))));
+
+#ifdef WIN32
+ {
+ extern DLLIMPORT HANDLE PostmasterHandle;
+ FILETIME creationTime;
+ FILETIME exitTime, kernelTime, userTime;
+ SYSTEMTIME st;
+
+ bool rc=GetProcessTimes(PostmasterHandle, &creationTime,
+ &exitTime, &kernelTime, &userTime);
+ if (!rc)
+ PG_RETURN_NULL();
+
+ FileTimeToSystemTime(&creationTime, &st);
+
+ tm.tm_year = st.wYear;
+ tm.tm_mon = st.wMonth;
+ tm.tm_mday = st.wDay;
+ tm.tm_hour = st.wHour;
+ tm.tm_min = st.wMinute;
+ tm.tm_sec = st.wSecond;
+ }
+#else
+ PG_RETURN_NULL();
+#endif
+
+ if (tm2timestamp(&tm, 0, NULL, &result) != 0)
+ {
+ ereport(ERROR,
+ (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+ errmsg("postmaster timestamp out of range")));
+ }
+
+ PG_RETURN_TIMESTAMP(result);
+}
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly