RFC: Adding \history [options] [filename] to psql (Snippets and Shared Queries)
Everyone,
After recently deep diving on some readline features and optimizing my
bash environment to have a static set of "snippets" that I can always
find...
it takes just a couple of history API calls to add some interesting
features for those that want them. The result of adding 3-4 such commands
(all under \history, and with compatible flags):
- Saving your current history without exiting (currently doable as \s
:HISTFILE)
- Reloading your history file (so you can easily share something across
sessions) w/o exiting.
- Stack Loading of specific history (like a shared snippets library, and a
personal snippets library) [clearing your history, then loading them in a
custom order]
The upside is really about clearly identifying and sharing permanent
snippets, while having that list be editable externally. Again, bringing
teams online who don't always know the PG way of doing things (Waits,
Locks, Space, High CPU queries, Running Queries).
My intention is to leverage the way PSQL keeps the Comment above the SQL
with the SQL.
Then I can step backwards searching for "context" markers (Ctrl-R) or
-- <CONTEXT> [F8] {history-search-backward}
To rip through my snippets
Kirk...
PS: I could do all of this under \s [options] [filename] it's just less
clear...
On Mon, Jun 5, 2023 at 8:58 AM Kirk Wolak <wolakk@gmail.com> wrote:
Everyone,
After recently deep diving on some readline features and optimizing my bash environment to have a static set of "snippets" that I can always find...it takes just a couple of history API calls to add some interesting features for those that want them. The result of adding 3-4 such commands (all under \history, and with compatible flags):
- Saving your current history without exiting (currently doable as \s :HISTFILE)
- Reloading your history file (so you can easily share something across sessions) w/o exiting.
- Stack Loading of specific history (like a shared snippets library, and a personal snippets library) [clearing your history, then loading them in a custom order]The upside is really about clearly identifying and sharing permanent snippets, while having that list be editable externally. Again, bringing teams online who don't always know the PG way of doing things (Waits, Locks, Space, High CPU queries, Running Queries).
My intention is to leverage the way PSQL keeps the Comment above the SQL with the SQL.
Then I can step backwards searching for "context" markers (Ctrl-R) or
-- <CONTEXT> [F8] {history-search-backward}To rip through my snippets
Kirk...
PS: I could do all of this under \s [options] [filename] it's just less clear...
Understandably, there doesn't seem to be a lot of enthusiasm for this.
If you could show others a sample/demo session of what the UI and UX
would look like, maybe others can chime in with either their opinion
of the behaviour, or perhaps a better/different way of achieving that.
Best regards,
Gurjeet
http://Gurje.et
On Tue, Jun 13, 2023 at 1:59 AM Gurjeet Singh <gurjeet@singh.im> wrote:
On Mon, Jun 5, 2023 at 8:58 AM Kirk Wolak <wolakk@gmail.com> wrote:
Everyone,
After recently deep diving on some readline features and optimizing mybash environment to have a static set of "snippets" that I can always
find...it takes just a couple of history API calls to add some interesting
features for those that want them. The result of adding 3-4 such commands
(all under \history, and with compatible flags):- Saving your current history without exiting (currently doable as \s
:HISTFILE)
- Reloading your history file (so you can easily share something across
sessions) w/o exiting.
- Stack Loading of specific history (like a shared snippets library, and
a personal snippets library) [clearing your history, then loading them in a
custom order]The upside is really about clearly identifying and sharing permanent
snippets, while having that list be editable externally. Again, bringing
teams online who don't always know the PG way of doing things (Waits,
Locks, Space, High CPU queries, Running Queries).My intention is to leverage the way PSQL keeps the Comment above the
SQL with the SQL.
Then I can step backwards searching for "context" markers (Ctrl-R) or
-- <CONTEXT> [F8] {history-search-backward}To rip through my snippets
Kirk...
PS: I could do all of this under \s [options] [filename] it's just lessclear...
Understandably, there doesn't seem to be a lot of enthusiasm for this.
If you could show others a sample/demo session of what the UI and UX
would look like, maybe others can chime in with either their opinion
of the behaviour, or perhaps a better/different way of achieving that.Gurjeet,
I agree. I've decided to do an implementation, and then explain its
usage. There are 2-3 different use cases.
Like pasting a huge script of one liners into \e and then executing them.
But not wanting them in your history.
\s -c -- Clear the history
\s -r :HISTFILE
The magic I want for snippets is (inside .psqlrc):
\s -r snippets.sql
and then let the normal histfile load.
or use
\s -r :HISTFILE and force it to load.
Then the hard examples and the invocation will make more sense.
Thanks for the feedback!
Show quoted text
Best regards,
Gurjeet
http://Gurje.et