On Wed, Mar 1, 2023 at 4:41 AM Jim Jones <jim.jo...@uni-muenster.de> wrote:

> On 01.03.23 01:59, Kirk Wolak wrote:
> > I cannot get the last email to show up for the commitfest.
> > This is version 2 of the original patch. [1]
> > Thanks Jim!
> >
> > [1]
> https://postgr.es/m/CACLU5mSRwHr_8z%3DenMj-nXF1tmC7%2BJn5heZQNiKuLyxYUtL2fg%40mail.gmail.com
> >
> > Regards Kirk.
>
> The patch didn't pass the SanityCheck:
>
> https://cirrus-ci.com/task/5445242183221248?logs=build#L1337
>
> missing a header perhaps?
>
> #include "time.h"
>
> Best, Jim
>

Thanks, corrected, and confirmed Unix line endings.
FWIW, the simplest way to test it is with this command (I usually get it
wrong on the first guess)

\set PROMPT1 %T ' ' :PROMPT1

Kirk
From bfafeaec64d01a404fe36f26ec4355607776e66b Mon Sep 17 00:00:00 2001
From: Kirk Wolak <wol...@gmail.com>
Date: Wed, 1 Mar 2023 16:02:10 +0000
Subject: [PATCH] [PATCH v3] Time option added to psql prompt

This adds a useful time option to the prompt: %T. Which does not
require a wasteful backquoted shell command which is also not
compatible between operating systems.
The format is simply HH24:MI:SS no other options available by design!

Author: Kirk Wolak <wol...@gmail.com>
Reviewed-By: Andrey Borodin <amboro...@acm.org>
Reviewed-By: Nikolay Samokhvalov <samokhva...@gmail.com>
Thread: 
https://postgr.es/m/CACLU5mSRwHr_8z%3DenMj-nXF1tmC7%2BJn5heZQNiKuLyxYUtL2fg%40mail.gmail.com
---
 doc/src/sgml/ref/psql-ref.sgml |  9 +++++++++
 src/bin/psql/prompt.c          | 11 ++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index dc6528dc11d..04ab9eeb8c0 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -4575,6 +4575,15 @@ testdb=&gt; <userinput>INSERT INTO my_table VALUES 
(:'content');</userinput>
         </listitem>
       </varlistentry>
 
+      <varlistentry id="app-psql-prompting-t-uc">
+        <term><literal>%T</literal></term>
+        <listitem>
+         <para>
+          The current time on the client in HH24:MI:SS format.
+         </para>
+        </listitem>
+      </varlistentry>
+
       <varlistentry id="app-psql-prompting-x">
         <term><literal>%x</literal></term>
         <listitem>
diff --git a/src/bin/psql/prompt.c b/src/bin/psql/prompt.c
index 969cd9908e5..24dffcd461c 100644
--- a/src/bin/psql/prompt.c
+++ b/src/bin/psql/prompt.c
@@ -18,6 +18,7 @@
 #include "libpq/pqcomm.h"
 #include "prompt.h"
 #include "settings.h"
+#include "time.h"
 
 /*--------------------------
  * get_prompt
@@ -41,6 +42,7 @@
  *                     or a ! if session is not connected to a database;
  *             in prompt2 -, *, ', or ";
  *             in prompt3 nothing
+ * %T - time in HH24:MI:SS format
  * %x - transaction status: empty, *, !, ? (unknown or no connection)
  * %l - The line number inside the current statement, starting from 1.
  * %? - the error code of the last query (not yet implemented)
@@ -223,7 +225,14 @@ get_prompt(promptStatus_t status, ConditionalStack cstack)
                                                        break;
                                        }
                                        break;
-
+                                       /* output HH24:MI:SS */
+                               case 'T':
+                                       {
+                                               time_t current_time = 
time(NULL);
+                                               struct tm *tm_info = 
localtime(&current_time);
+                                               sprintf(buf, "%02d:%02d:%02d", 
tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);
+                                       }
+                                       break;
                                case 'x':
                                        if (!pset.db)
                                                buf[0] = '?';
-- 
GitLab

Reply via email to