Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Dominique Devienne
On Fri, May 20, 2022 at 5:31 AM Julien Rouhaud  wrote:
> On Thu, May 19, 2022 at 06:38:46PM -0400, Tom Lane wrote:
> > Julien Rouhaud  writes:
> > Pushed, with some minor twiddling to make ... descriptions more alike.
> Thanks a lot!

And thank you both! --DD




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Julien Rouhaud
On Thu, May 19, 2022 at 06:38:46PM -0400, Tom Lane wrote:
> Julien Rouhaud  writes:
> > This time with the patch.
> 
> Pushed, with some minor twiddling to make the .pgpass and .pg_service.conf
> descriptions more alike.  I figured that the .pgpass docs are fine since
> (surely) many more people have looked at those passages and not
> complained, so I made sure that the service file descriptions were worded
> comparably.

Thanks a lot!




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Tom Lane
Julien Rouhaud  writes:
> This time with the patch.

Pushed, with some minor twiddling to make the .pgpass and .pg_service.conf
descriptions more alike.  I figured that the .pgpass docs are fine since
(surely) many more people have looked at those passages and not
complained, so I made sure that the service file descriptions were worded
comparably.

regards, tom lane




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Julien Rouhaud
On Thu, May 19, 2022 at 11:53:22PM +0800, Julien Rouhaud wrote:
> On Thu, May 19, 2022 at 10:11:06AM -0400, Tom Lane wrote:
> > I do not like your proposed wording, as it seems way too dense.
> > Can't we avoid the parenthetical remarks (plural) inside a sub-clause?
> > You're asking the reader to keep track of about three levels of
> > interrupt.
> 
> Yes, I was a bit unhappy with this wording.
> 
> > Maybe just put the Windows info in a separate sentence:
> > 
> > ... located at ~/.pg_service.conf.
> > On Microsoft Windows, it is located at
> > %APPDATA%\postgresql\.pg_service.conf, where %APPDATA% means the
> > Application Data subdirectory in the user's profile.
> > In either case, the location can be overridden by setting ...
> > 
> > ISTR there's precedent elsewhere for doing it about like that.
> 
> I'm fine with it.  I still kept the default location full description in both
> places as those end up in quite different part of the documentation, which
> seems more helpful.

This time with the patch.
>From 27f69c2f44564b47a8f0caa31f9406468e9e77a9 Mon Sep 17 00:00:00 2001
From: Julien Rouhaud 
Date: Thu, 19 May 2022 17:42:07 +0800
Subject: [PATCH v2] Document the default location of the PGSERVICEFILE on
 Windows.

Per report from Dominique Devienne.

Author: Julien Rouhaud
Discussion: 
https://postgr.es/m/CAFCRh-_mdLrh8eYVzhRzu4c8bAFEBn=rwohomfjcqotscy5...@mail.gmail.com
---
 doc/src/sgml/libpq.sgml | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 40035d7656..105b1bd94b 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -7787,9 +7787,12 @@ myEventProc(PGEventId evtId, void *evtInfo, void 
*passThrough)
PGSERVICEFILE
   
   PGSERVICEFILE specifies the name of the per-user
-  connection service file.  If not set, it defaults
-  to ~/.pg_service.conf
-  (see ).
+  connection service file (see ).  If not
+  set, it defaults to ~/.pg_service.conf.  On
+  Microsoft Windows, it defaults to
+  %APPDATA%\postgresql\.pg_service.conf (where
+  %APPDATA% refers to the Application Data
+  subdirectory in the user's profile).
  
 
 
@@ -8161,9 +8164,12 @@ myEventProc(PGEventId evtId, void *evtInfo, void 
*passThrough)
   
Service names can be defined in either a per-user service file or a
system-wide file.  If the same service name exists in both the user
-   and the system file, the user file takes precedence.
-   By default, the per-user service file is located
-   at ~/.pg_service.conf; this can be overridden by
+   and the system file, the user file takes precedence.  By default, the
+   per-user service file is located at ~/.pg_service.conf.
+   On Microsoft Windows, it is located at
+   %APPDATA%\postgresql\.pg_service.conf (where
+   %APPDATA% refers to the Application Data subdirectory
+   in the user's profile).  In either case, the location can be overridden by
setting the environment variable PGSERVICEFILE.
The system-wide file is named pg_service.conf.
By default it is sought in the etc directory
-- 
2.33.1



Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Julien Rouhaud
On Thu, May 19, 2022 at 10:11:06AM -0400, Tom Lane wrote:
> I do not like your proposed wording, as it seems way too dense.
> Can't we avoid the parenthetical remarks (plural) inside a sub-clause?
> You're asking the reader to keep track of about three levels of
> interrupt.

Yes, I was a bit unhappy with this wording.

> Maybe just put the Windows info in a separate sentence:
> 
>   ... located at ~/.pg_service.conf.
>   On Microsoft Windows, it is located at
>   %APPDATA%\postgresql\.pg_service.conf, where %APPDATA% means the
>   Application Data subdirectory in the user's profile.
>   In either case, the location can be overridden by setting ...
> 
> ISTR there's precedent elsewhere for doing it about like that.

I'm fine with it.  I still kept the default location full description in both
places as those end up in quite different part of the documentation, which
seems more helpful.




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Tom Lane
Julien Rouhaud  writes:
> We can't change the default file in older branches obviously, but I'd be a bit
> worried about changing the default in the next major version either as it 
> would
> add unnecessary pain for users that do know and rely on the current default.  
> I
> guess we have to live with it, and properly document it.

Yeah, agreed.  Documentation fix seems like the way to go.

I do not like your proposed wording, as it seems way too dense.
Can't we avoid the parenthetical remarks (plural) inside a sub-clause?
You're asking the reader to keep track of about three levels of
interrupt.

Maybe just put the Windows info in a separate sentence:

... located at ~/.pg_service.conf.
On Microsoft Windows, it is located at
%APPDATA%\postgresql\.pg_service.conf, where %APPDATA% means the
Application Data subdirectory in the user's profile.
In either case, the location can be overridden by setting ...

ISTR there's precedent elsewhere for doing it about like that.

regards, tom lane




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Julien Rouhaud
On Thu, May 19, 2022 at 10:57:55AM +0200, Dominique Devienne wrote:
> On Thu, May 19, 2022 at 10:17 AM Julien Rouhaud  wrote:
> > > Or is it instead a lack of symmetry in the implementations of these
> > > two mechanisms?
> >
> > As far as I can see from the code it should be
> > %APPDATA%\postgresql\.pg_service.conf
> >
> > Does this one work?
>
> Yes it does! Thanks.

Ah great!

> > There is a discrepancy (apart from the documentation) as the default
> > file name is the same on Linux and Windows.
>
> The doc is explicit about Windows for the password file,
> probably should be for the service file as well IMHO.

Yeah I totally agree.  I'm attaching a patch for that.

> It's unfortunate that the naming conventions are different.
> Might need to be warned about in the doc too. My $0.02.

I agree that the discrepancy is annoying, but I don't think that we usually add
this kind of warning.  I didn't do anything about it for now.
>
> Could also be changed to try both on Windows, with or w/o the leading dot,
> but I suspect this kind of change won't be considered worth implementing :).

We can't change the default file in older branches obviously, but I'd be a bit
worried about changing the default in the next major version either as it would
add unnecessary pain for users that do know and rely on the current default.  I
guess we have to live with it, and properly document it.
>From 27853c7df7ea03b47e0a7f7b609693f8b0789723 Mon Sep 17 00:00:00 2001
From: Julien Rouhaud 
Date: Thu, 19 May 2022 17:42:07 +0800
Subject: [PATCH v1] Document the default location of the PGSERVICEFILE on
 Windows.

Per report from Dominique Devienne.

Author: Julien Rouhaud
Discussion: 
https://postgr.es/m/CAFCRh-_mdLrh8eYVzhRzu4c8bAFEBn=rwohomfjcqotscy5...@mail.gmail.com
---
 doc/src/sgml/libpq.sgml | 12 +---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 40035d7656..758e06e610 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -7788,8 +7788,11 @@ myEventProc(PGEventId evtId, void *evtInfo, void 
*passThrough)
   
   PGSERVICEFILE specifies the name of the per-user
   connection service file.  If not set, it defaults
-  to ~/.pg_service.conf
-  (see ).
+  to ~/.pg_service.conf, or
+  %APPDATA%\postgresql\.pg_service.conf (where
+  %APPDATA% refers to the Application Data
+  subdirectory in the user's profile) on Microsoft Windows (see ).
  
 
 
@@ -8163,7 +8166,10 @@ myEventProc(PGEventId evtId, void *evtInfo, void 
*passThrough)
system-wide file.  If the same service name exists in both the user
and the system file, the user file takes precedence.
By default, the per-user service file is located
-   at ~/.pg_service.conf; this can be overridden by
+   at ~/.pg_service.conf, or
+   %APPDATA%\postgresql\.pg_service.conf (where
+   %APPDATA% refers to the Application Data subdirectory
+   in the user's profile) on Microsoft Windows; this can be overridden by
setting the environment variable PGSERVICEFILE.
The system-wide file is named pg_service.conf.
By default it is sought in the etc directory
-- 
2.33.1



Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Dominique Devienne
On Thu, May 19, 2022 at 10:17 AM Julien Rouhaud  wrote:
> > Or is it instead a lack of symmetry in the implementations of these
> > two mechanisms?
>
> As far as I can see from the code it should be
> %APPDATA%\postgresql\.pg_service.conf
>
> Does this one work?

Yes it does! Thanks.

> There is a discrepancy (apart from the documentation) as the default
> file name is the same on Linux and Windows.

The doc is explicit about Windows for the password file,
probably should be for the service file as well IMHO.

It's unfortunate that the naming conventions are different.
Might need to be warned about in the doc too. My $0.02.

Could also be changed to try both on Windows, with or w/o the leading dot,
but I suspect this kind of change won't be considered worth implementing :).

Thanks again Julien, --DD




Re: No default for (user-specific) service file location on Windows?

2022-05-19 Thread Julien Rouhaud
Hi,

On Thu, May 19, 2022 at 3:46 PM Dominique Devienne  wrote:
>
> The doc is explicit about defaults for the password file:
> From https://www.postgresql.org/docs/current/libpq-pgpass.html
> Linux: ~/.pgpass
> Windows: %APPDATA%\postgresql\pgpass.conf
>
> But for the service file OTOH, only the Linux default is documented:
> From: https://www.postgresql.org/docs/current/libpq-pgservice.html
> Linux: ~/.pg_service.conf
> Windows: N/A
>
> I tried the obvious %APPDATA%\postgresql\pg_service.conf, with no luck.
>
> So is this a lack in the documentation for the service file?
> Or is it instead a lack of symmetry in the implementations of these
> two mechanisms?
>
> If the latter, any chance the symmetry would be restored? (with
> corresponding doc update).

As far as I can see from the code it should be
%APPDATA%\postgresql\.pg_service.conf

Does this one work?

There is a discrepancy (apart from the documentation) as the default
file name is the same on Linux and Windows.




No default for (user-specific) service file location on Windows?

2022-05-19 Thread Dominique Devienne
Hi,

The doc is explicit about defaults for the password file:
>From https://www.postgresql.org/docs/current/libpq-pgpass.html
Linux: ~/.pgpass
Windows: %APPDATA%\postgresql\pgpass.conf

But for the service file OTOH, only the Linux default is documented:
From: https://www.postgresql.org/docs/current/libpq-pgservice.html
Linux: ~/.pg_service.conf
Windows: N/A

I tried the obvious %APPDATA%\postgresql\pg_service.conf, with no luck.

So is this a lack in the documentation for the service file?
Or is it instead a lack of symmetry in the implementations of these
two mechanisms?

If the latter, any chance the symmetry would be restored? (with
corresponding doc update).

I guess the only work-around specific to Windows at this point, if the latter,
would be defining the PGSERVICEFILE env-var explicitly? --DD