Subject: Feature #5370 User should be able to set the binary path for each database server

From: Akshay Joshi <[email-masked]>
Date: Thu, 13 May 2021 14:25:40 +0530

Hi Dave/Hackers

I have implemented feature #5370 "User should be able to set the binary
path for each database server." I have added "Utility path" control in the
Advanced tab of the server dialog, refer to the image below:

If the above path is set by the user then will pick that else we will pick
the default binary path of the preferences dialog (if set). In case utility
is not found on the specified path we raise the popup dialog with the
modified error message.

If the above implementation looks good then, I'll commit this feature by
today's EOD.

-- 
*Thanks & Regards*
*Akshay Joshi*
*pgAdmin Hacker | Principal Software Architect*
*EDB Postgres <http://edbpostgres.com>*

*Mobile: +91 976-788-8246*

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 13 May 2021 14:42:41 +0530

Hi Akshay,

Just to make it more discoverable, please also change the help text in
Preferences dialog.

-- 
Thanks,
Aditya Toshniwal
pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
<http://edbpostgres.com>
"Don't Complain about Heat, Plant a TREE"

---

From: Akshay Joshi <[email-masked]>
Date: Thu, 13 May 2021 15:04:52 +0530

Hi Aditya/Hackers

Are the above changes looks good?

On Thu, May 13, 2021 at 2:43 PM Aditya Toshniwal <
[email-masked]> wrote:

> On Thu, May 13, 2021 at 2:26 PM Akshay Joshi <
> [email-masked]> wrote:
>
>> Hi Dave/Hackers
>>
>>                           [image: Screenshot 2021-05-13 at 2.11.52
>> PM.png]
>>
>> If the above path is set by the user then will pick that else we will
>> pick the default binary path of the preferences dialog (if set). In case
>> utility is not found on the specified path we raise the popup dialog with
>> the modified error message.
>>
>>

---

From: Dave Page <[email-masked]>
Date: Thu, 13 May 2021 10:39:42 +0100

Hi Akshay,

> Are the above changes looks good?

Well, s/Global/Default, but otherwise that, and the other UI is fine.

However, that does mean the path needs to be set for every server (and keep
in mind, I know some users of this code have hundreds registered), and it
also means that we cannot pre-configure the paths in, for example, our
container.

I'd prefer to see all the configuration in Preferences, so we'd maybe have
a grid instead of a text field, containing three columns, one with the
major version number, and one with the path to use for that version. The
third column would be a radio button to mark a particular path as the
default to use in case another path isn't set.

>>>                          [image: Screenshot 2021-05-13 at 2.12.28
>>> PM.png]
>>>

-- 
Dave Page
Blog: https://pgsnake.blogspot.com
Twitter: @pgsnake

EDB: https://www.enterprisedb.com

---

From: Akshay Joshi <[email-masked]>
Date: Thu, 13 May 2021 15:33:46 +0530

On Thu, May 13, 2021 at 3:09 PM Dave Page <[email-masked]> wrote:

> Hi Akshay,
>
> On Thu, May 13, 2021 at 10:35 AM Akshay Joshi <
> However, that does mean the path needs to be set for every server (and
> keep in mind, I know some users of this code have hundreds registered), and
> it also means that we cannot pre-configure the paths in, for example, our
> container.
>

    Yes, if the user wants to set it, else default path in the preferences
is applicable. Yes, we can't pre-configure the paths.

> default to use in case another path isn't set.

   OK, we need to create a new control for that which we can add into the
Preferences. If I understand correctly initially the grid is empty, the
user will have to add the major version (from the drop-down and that list
contains values like 'PostgreSQL 10', 'PostgreSQL 11', 'EDB Advanced Server
10', .....) and respective path.

>>>> If the above implementation looks good then, I'll commit this feature
>>>> by today's EOD.
>>>>
>>>> --
>>>> *Thanks & Regards*
>>>> *Akshay Joshi*

---

From: Dave Page <[email-masked]>
Date: Thu, 13 May 2021 14:33:37 +0100

On Thu, May 13, 2021 at 11:03 AM Akshay Joshi <[email-masked]>
wrote:

>> I'd prefer to see all the configuration in Preferences, so we'd maybe
>> have a grid instead of a text field, containing three columns, one with the

No, I would say it should be pre-filled with the supported versions.

It doesn't necessarily have to be a grid though, if you can think of a
better way of presenting it.

Also; we will also need some to migrate and extend this config:

DEFAULT_BINARY_PATHS = {
    "pg": "",
    "ppas": "",
    "gpdb": ""}

>>>>> I have implemented feature #5370 "User should be able to set the
>>>>> binary path for each database server." I have added "Utility path" control
>>>>> in the Advanced tab of the server dialog, refer to the image below:
>>>>>

---

From: Akshay Joshi <[email-masked]>
Date: Fri, 21 May 2021 12:33:34 +0530

Hi Dave/Hackers

On Thu, May 13, 2021 at 7:03 PM Dave Page <[email-masked]> wrote:

>
>
> On Thu, May 13, 2021 at 11:03 AM Akshay Joshi <
>>     Yes, if the user wants to set it, else default path in the
>> preferences is applicable. Yes, we can't pre-configure the paths.
>>
>>>
    As per your suggestion, I have created a new Backform control
"BinaryPathsGridControl" and two new BackgridCell (BackgridRadioCell and
BackgridSelectFileCell). Please refer to the screenshot below:

   Are the above changes look good to you? The radio button will only be
enabled when there is a path. Added validate button which will validate the
Utilities (pg_dump, pg_dumpall, ...)

---

From: Dave Page <[email-masked]>
Date: Fri, 21 May 2021 08:31:04 +0100

Hi Akshay,

> Utilities (pg_dump, pg_dumpall, ...)

Nice! Just a couple of comments:

- I assume the browse button is removed in server mode as discussed? Maybe
we should add a config.py option to allow that behaviour to be overridden
if the admin doesn't care about sandboxing?

- I think we need some hint text. How about something like:

Enter the directory in which the psql, pg_dump, pg_dumpall, and pg_restore
utilities can be found for the corresponding database server version. The
default path will be used for server versions that do not have a path
specified.

---

From: Akshay Joshi <[email-masked]>
Date: Fri, 21 May 2021 14:31:40 +0530

On Fri, May 21, 2021 at 1:01 PM Dave Page <[email-masked]> wrote:

> Hi Akshay,
>
> On Fri, May 21, 2021 at 8:03 AM Akshay Joshi <

     Yes, will take care that in server mode browse button should not be
visible. if the config option "ENABLE_FILE_BROWSING" is set to true then
only the browse button will be enabled in server mode.

> default path will be used for server versions that do not have a path

    I have added the hint in two ways, please refer to the screenshots
below and let me know your prefered one.
         .        [image:
Screenshot 2021-05-21 at 2.23.50 PM.png]

---

From: Dave Page <[email-masked]>
Date: Fri, 21 May 2021 10:16:32 +0100

Hi Akshay,

On Fri, May 21, 2021 at 10:01 AM Akshay Joshi <[email-masked]>
wrote:

>> - I assume the browse button is removed in server mode as discussed?
>> Maybe we should add a config.py option to allow that behaviour to be
>> overridden if the admin doesn't care about sandboxing?
>>
>

I think the name needs to be a little more specific. How about
ENABLE_BINARY_PATH_BROWSING?

>> Enter the directory in which the psql, pg_dump, pg_dumpall, and
>> pg_restore utilities can be found for the corresponding database server
>> version. The default path will be used for server versions that do not have
>> a path specified.
>>
>

I think having the text below is better. It's more consistent with other
controls.

---

From: Akshay Joshi <[email-masked]>
Date: Thu, 3 Jun 2021 19:36:57 +0530

Hi Dave/Hackers

I have almost completed the implementation of this feature as per the
discussion. Facing one wired alertify issue whenever we open the preference
dialog and scroll to the bottom of any page and then open another alertify
dialog (About) scroll bars automatically scroll to top
https://redmine.postgresql.org/issues/6506.

After creating a new RM #6506, I did some R&D and figure out that if create
Preferences dialog as a modal dialog issue is resolved. So I think there
should not be any problem to make the Preferences dialog as a modal dialog?

Please refer to the image below:

Is the above look good to you?

Regarding migrate and extend the configuration "DEFAULT_BINARY_PATHS" I
have the following questions:

   - If "DEFAULT_BINARY_PATHS" is defined then, where to show this in the
   grid? Can we show it to the latest database server version and make it
   default?
   - If you agree to the first point then what if the user has already
   define another path for the latest database server version, should we
   overwrite it?

On Fri, May 21, 2021 at 2:46 PM Dave Page <[email-masked]> wrote:

> Hi Akshay,
>
> On Fri, May 21, 2021 at 10:01 AM Akshay Joshi <
>>>>    Are the above changes look good to you? The radio button will only
>>>> be enabled when there is a path. Added validate button which will validate
>>>> the Utilities (pg_dump, pg_dumpall, ...)
>>>>
>>>

---

From: Dave Page <[email-masked]>
Date: Fri, 4 Jun 2021 09:21:32 +0100

Hi Akshay,

On Thu, Jun 3, 2021 at 3:07 PM Akshay Joshi <[email-masked]>
wrote:

> After creating a new RM #6506, I did some R&D and figure out that if
> create Preferences dialog as a modal dialog issue is resolved. So I think
> there should not be any problem to make the Preferences dialog as a modal
> dialog?
>

I'd much prefer to avoid using modals (I'd also like to get rid of
Alertify, but that's another issue altogether). I'm not sure this minor bug
really warrants using a modal - it's a trivial inconvenience, that occurs
in quite unusual circumstances.

> Is the above look good to you?

Yes.

> Set it for the correct version, not the latest. It should be easy enough
to figure out.

> No - only set the per-version setting if it's empty.

Thanks.

---

From: Akshay Joshi <[email-masked]>
Date: Fri, 4 Jun 2021 14:28:54 +0530

Hi Dave

On Fri, Jun 4, 2021 at 1:51 PM Dave Page <[email-masked]> wrote:

>> create Preferences dialog as a modal dialog issue is resolved. So I
>> think there should not be any problem to make the Preferences dialog as a
>> modal dialog?
>>
>

    This is very annoying for Binary Path when the user selects the binary
path and tries to validate or try to select 'Set as default', it scrolls to
the top. We need to fix it by making Preferences dialog as a modal dialog.

>>    - If "DEFAULT_BINARY_PATHS" is defined then, where to show this in
>>    the grid? Can we show it to the latest database server version and make it
>>    default?
>>
>>>>      Yes, will take care that in server mode browse button should not
>>>> be visible. if the config option "ENABLE_FILE_BROWSING" is set to true then

---

From: Dave Page <[email-masked]>
Date: Fri, 4 Jun 2021 12:29:11 +0100

On Fri, Jun 4, 2021 at 9:59 AM Akshay Joshi <[email-masked]>
wrote:

>> On Thu, Jun 3, 2021 at 3:07 PM Akshay Joshi <

OK.

>>>>>>>    Are the above changes look good to you? The radio button will
>>>>>>> only be enabled when there is a path. Added validate button which will
>>>>>>> validate the Utilities (pg_dump, pg_dumpall, ...)
>>>>>>>
>>>>>>
>>>> I think having the text below is better. It's more consistent with
>>>> other controls.
>>>>
>>>>
>>>> --
>>>> Dave Page