1
0
Fork 0
Commit Graph

478 Commits

Author SHA1 Message Date
saucoide ce7f76a676
Add --log-file & \log-file option to always capture output (#1461)
* Add --log-file & \log-file option to always capture output

Currently outputting to a file via \o disables the console output
This patch adds a `--log-file` cli arg with similar behavior to `psql`* and a \log-file
special command to enable/disable it from the console

*https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-OPTION-LOG-FILE

* switch to use context manager

Co-authored-by: Irina Truong <637013+j-bennet@users.noreply.github.com>

* switch to use context manager

Co-authored-by: Irina Truong <637013+j-bennet@users.noreply.github.com>

* use isoformat explicitly

Co-authored-by: Irina Truong <637013+j-bennet@users.noreply.github.com>

* change test to use a mock, update changelog & authors

* reformat

* black

---------

Co-authored-by: Irina Truong <637013+j-bennet@users.noreply.github.com>
2024-04-30 19:03:31 -07:00
Andrew 8cc22b9d3a
Add verbose_errors config and special command (#1455)
* Add verbose_errors config

* Update changelog

* Add special command

* Blackify
2024-03-26 15:31:38 -07:00
Andrew a7a70fdc92
Echo notifications (#1385)
* Echo notifications

* Blackify

* Clean up a bit

* Add test

* Blackify

* Update changelog

* Fix tests
2024-03-23 13:24:40 -07:00
Damien Baty 9f114c4549 feat: Replace pendulum by home-made duration-to-words function
`pgcli` uses Pendulum to display the query execution time in words:

    > select pg_sleep(62)
    +----------+
    | pg_sleep |
    |----------|
    |          |
    +----------+
    SELECT 1
    Time: 62.066s (1 minute 2 seconds), executed in: 62.063s (1 minute 2 seconds)

Pendulum 3 (which has been released in December 2023 and is now
written in Rust) does not build on 32-bit architectures [1]. As such,
installing `pgcli` on such architectures fails. We could pin Pendulum
to version 2 (which was written in Python and builds "everywhere"),
but requiring a whole library and its own dependencies for such a
small feature seems unwarranted.

This commit thus removes the requirement on Pendulum and replaces it
by a simple "duration-to-words" function.

Fixes #1451.

[1] Upstream issue: https://github.com/sdispater/pendulum/issues/784
2024-02-20 12:51:20 +01:00
ERYoung11 27b2bc2d37
Raised notices (#1450)
* Fix - Raised notices are printed backwards #1443

* updated changelog

* removed a print

* fixed up syntax error

* removing unneeded Nones from output

* rem var due to github recommendation

* adjusting if statements.
2024-02-05 21:41:28 -08:00
Antonio e2ff38d170
Support PGAPPNAME (#1444)
The application_name to be used when connecting to a database can now be
specified as a command line argument (--application-name) or be taken
directly from environment variables (PGAPPNAME). It still defaults to
'pgcli' when not specified.

Closes #1421.
2023-12-08 20:21:28 -08:00
Damien Baty f2156b3151
Fix short host (\h) display in prompt when using an IP address (#1441)
When connecting to an IPv4 address (`pgcli -h 127.0.0.1`), trying to
use the "short host" in the prompt (with `\h`) would only display the
first octet (127). Now it shows the full IP.

Fixes #964.
2023-11-17 22:38:50 -08:00
Sharon Yogev 0ad3393fa8
confirm_destructive_query: Use confirm rather than prompt (#1410)
* confirm_destructive_query: Use confirm rather than prompt

* Fix tests
2023-10-18 09:25:29 -07:00
ERYoung11 13ca7d2430
fixed #1403, improved comment handling (#1404)
* fixed #1403, improved comment handling

* black + hooks + changelog

---------

Co-authored-by: Irina Truong <i.chernyavska@gmail.com>
2023-10-12 22:28:11 -07:00
Irina Truong 6332e18b48
Drop python 3.7, add 3.12 (#1426)
* Fix deprecation.

* Drop python 3.7 and add 3.12.

* Bump pendulum.

* Changelog.

* Update gh actions.

* See if things pass without this scenario.

* Skip failing scenarios in 3.12.
2023-10-11 12:34:59 +08:00
Rob Berry 97a1fd6c16
Allow defining a json file with preferred aliases (#1382)
* fix psycopg.sql.Identifier in \ev handling (#1384)

* Allow defining a json file with preferred aliases

At $WORK we have a lot of tables with names like `foo_noun_verb` or
`foo_noun_related-noun_verb` and so while the default aliasing is very
helpful for shortening unwieldy names we do end up with lots of aliases
like `LEFT JOIN fnv on fnv2.id = fnv.fnv2_id`

This change will allow defining a json file of preferred aliases

```
> cat ~/.config/pgcli/aliases.json
{
    "foo_user": "user",
    "foo_user_group": "user_group"
}
```

so the alias suggestion for `SELECT * FROM foo_user` will be `SELECT * FROM foo_user AS user`
instead of the default `SELECT * FROM foo_user AS fu`

* When cannot open or parse alias_map_file raise error

Raise a (hopefully) helpful exception when the alias_map_file cannot be
parsed or does not exist

* Add tests for load_alias_map_file

* Add tests for generate_alias

* Update AUTHORS file

* Remove comment.

Discussed this on the PR with a project maintainer

---------

Co-authored-by: Andy Schoenberger <akschoenberger@gmail.com>
Co-authored-by: Rob B <rob@example.com>
Co-authored-by: Irina Truong <i.chernyavska@gmail.com>
2023-10-06 16:13:28 -07:00
ERYoung11 43360b5d1b
Added \echo & \qecho for Issue #1335 (#1371)
* Added \echo & \qecho for Issue #1335

* black + changelog updates

* trying to re-kick build process
2023-10-06 15:56:48 -07:00
Damien Baty cdfa35830b
Ask for confirmation to quit cli if a transaction is ongoing. (#1400)
If user tries to quit the cli while a transaction is ongoing (i.e.
begun, but not committed or rolled back yet), pgcli now asks for a
confirmation. The user can choose to commit, rollback or cancel the
exit. If the user chooses to commit or rollback, we exit only if the
commit/rollback succeeds.

Fixes #1071.
2023-09-26 21:36:59 -07:00
astroshot 69dcceb5f6
Fix sql-insert format emits NULL as 'None' (#1409)
* Sub: Fix issue #1408

Body:
1. Fix issue #1408 sql-insert format emits NULL as 'None';
2. Fix DUAL displays as ""DUAL"";

==== End ====

* Sub: Update changelog.rst

Body:

==== End ====

* Sub: Optimize if logic

Body:

==== End ====
2023-06-23 07:05:58 +02:00
Damien Baty d8eb8b5b82 Apply black (version 23.1.0) 2023-03-18 14:00:38 +01:00
Damien Baty 1c071770bb Remove leftovers of Python 2 support 2023-03-18 10:22:12 +01:00
Andy Schoenberger 2db54f14aa
fix psycopg.sql.Identifier in \ev handling (#1384) 2022-11-21 16:10:13 -08:00
Andy Schoenberger d6ca4c3464
Add config option to not automatically restart connection on destructive warning abort; defaults to not restarting. (#1379) 2022-11-17 20:13:05 -08:00
Rodrigo Neri (Rigo) 1726ff5397
Changed destructive_warning to take a list of destructive commands (#1328)
* Changed destructive_warning to take a list of destructive commands and added the dsn_alias as part of the destructive command warning

* Updated parse_destructive_warning to handle None

* Reverted auto formatted change to AUTHORS

* Reverted auto formatted change to AUTHORS
2022-10-13 14:42:22 -07:00
astroshot c0e1081405
Feature: Add new formatter to export data to sql like mycli (#1366)
* Sub: Add new formatter to export data to sql like mycli

Body: New formatter is added, we can export query result to sql
insertion like mycli

==== End ====

* Sub: Install black and reformat code

Body:

==== End ====

* Sub: Add unit tests for new formatter

Body:

==== End ====

* Sub: Add new formatter to pgclirc
2022-09-14 17:41:40 -07:00
ERYoung11 c93b15e98f oy, updated the issue. 2022-08-31 21:51:09 -05:00
ERYoung11 2850c83310 black'd the code. 2022-08-31 21:48:06 -05:00
ERYoung11 7a022a5f74 Removed unused re 2022-08-31 21:44:27 -05:00
ERYoung11 f7b1621e34 fixed comments with special see Issue #1362 2022-08-31 21:41:11 -05:00
Irina Truong f04ffae12f Add test. 2022-06-10 11:26:53 -07:00
Kian-Meng Ang d608ffe7c7
Fix typos (#1345)
Co-authored-by: Irina Truong <i.chernyavska@gmail.com>
2022-06-08 11:38:29 -07:00
Irina Truong 18071754bc
Port to psycopg3 (#1324)
* WIP.

* Add some comments about porting from psycopg 2 to 3 (#1318)

* WIP

* Disable _set_wait_callback()

* TransactionStatus.

* First working query.

* More pg3 changes.

* test_pgexecute still fails.

* Fix bytea support.

* Fix json and enum unicode.

* Get unit tests to pass.

* Behave tests still break, WIP.

* Prompt seems to be displayed fine, why don't the tests see the whitespace?

* Python version.

* Fix test.

* Black.

* Added black to dev reqs.

* nbu link for donations.

* Use psycopg.sql to format statement.

* Special case for show help in pgbouncer.

* Fix test.

* Added integration test.

* Install pgbouncer in ci.

* Fix integration test.

* Remove tmate session.

* Revert commenting out python versions.

* Pin pgspecial to >=2.

* Changelog.

Co-authored-by: Daniele Varrazzo <daniele.varrazzo@gmail.com>
Co-authored-by: Amjith Ramanujam <amjith.r@gmail.com>
2022-06-06 11:20:48 -07:00
Bruno Inec 54f0cc9ddd
ssh tunnels: allow configuring auto matches (#1302) 2022-02-21 10:20:11 -08:00
Bruno Inec ed9d123073
Add SSH tunnel support (#1301)
* Add initial sshtunnel support

* Force CI to rerun.

* Fix unit test for 3.6.

* Black.

Co-authored-by: Irina Truong <i.chernyavska@gmail.com>
2022-02-18 14:57:42 -08:00
Saif Hakim 123e00a086
Re-run last query with bare `\watch` (#1283)
* Re-run last query with bare `\watch`

* add test

* clean up post test refactor

* lint

* rerun tests
2021-09-30 12:00:31 -07:00
Irina Truong c65495716d
Add setting in config to control truncating field values. (#1285)
* Add setting in config to truncate field value.

* Black.

* Changelog.

* Fix tests.
2021-09-03 16:58:03 -07:00
Irina Truong e0a4c18c4a
Another attempt to fix pgbouncer error (1093.) (#1097)
* Another attempt to fix pgbouncer error (1093.)

* Fixes for various pgbouncer problems.

* different approach with custom cursor.

* Fix rebase.

* Missed this.

* Fix completion refresher test.

* Black.

* Unused import.

* Changelog.

* Fix race condition in test.

* Switch from is_pgbouncer to more generic is_virtual_database, and duck-type it. Add very dumb unit test for virtual cursor.

* Remove debugger code.
2021-05-21 15:32:34 -07:00
Amjith Ramanujam 898f8255e0 Blacken. 2021-05-07 12:43:32 -07:00
Amjith Ramanujam c196c28e78 Add tests for search_path function completion. 2021-05-07 12:36:40 -07:00
Amjith Ramanujam 6309dd4f93 Blacken. 2021-05-06 21:20:12 -07:00
Georgy Frolov c9fd72449e
skip initial comment in pg_session file (#1245)
* skip initial comment in pg_session file

* add test
2021-02-22 14:55:55 -08:00
ERYoung11 9ca545d880
Fix test_config.py on Windows (#1247)
* fixing test_config.py to work on windows

* Getting rid of odd characters in wrappager.py

* added a space to a comment to try to kick the github workflow.

Co-authored-by: Eric Young <YoungEricR@JohnDeere.com>
2021-02-22 14:40:30 -08:00
Irina Truong 3600566d46
Postgres user has password in ci. (#1243) 2021-02-15 13:07:55 -08:00
Irina Truong a3287c4ab2
Finer control over destructive warning. (#1242)
* Finer control over destructive warning.

* Review feedback.

* Changelog.

* Run integration tests with --warn=moderate.

* Fix typo.

* Black.
2021-02-12 21:09:38 -08:00
Miroslav Šedivý 762fb4b8da
Modernize code to Python 3.6+ (#1229)
1. `class A(object)` can be written as `class A:`
2. replace `dict([…])` and `set([…])` with `{…}`
3. use f-strings or compact `.format`
4. use `yield from` instead of `yield` in a `for` loop
5. import `mock` from `unittest`
6. expect `OSError` instead of `IOError` or `select` error
7. use Python3 defaults for file reading or `super()`
8. remove redundant parenthesis (keep those in tuples though)
9. shorten set intersection instead of creating lists
10. backslashes in strings do not have to be escaped if prepended with `r`
2021-02-12 21:34:56 +02:00
Irina Truong 000102ef9b
Conditional didn't work in CI. (#1237)
* Conditional didn't work in CI.

* Try to fix flaky exit.
2021-01-18 13:50:03 -08:00
Kevin Marsh 34d6e080ff
dependencies: add support for sqlparse 0.4.x (#1224) 2020-12-01 16:03:38 -08:00
laixintao f985e1bdd8
test: test pgcli on python3.9 (#1214)
* test: test pgcli on python3.9

* test on 3.9

* use 3.9-dev version from travis.

* try to fix pexpect EOF.
2020-10-13 11:47:34 -07:00
Sky.G.Uieen df1b40ca22
Update suggestion literals (#1195)
* Updated all data types literals

* Updated sql functions literals

* Updated changelog and auther

* Updated test code

* Added datatype test case
2020-07-31 10:21:58 -07:00
g.denis f3ac559844
Add pg_service.conf handling (#1155)
* add parse_service_info

* added tests

* changelog + AUTHORS

* py35
2020-04-17 14:52:19 -07:00
赖信涛 b6e2a229e5
upgrade prompt-toolit to 3.0 (#1149)
* upgrade prompt-toolit to 3.0

fix: https://github.com/dbcli/pgcli/issues/1148

related:
https://github.com/prompt-toolkit/python-prompt-toolkit/issues/886

in order to make the `behave` test pass, I have to:

- extend timeout for database connection test.
- extend timeout for basic command expect.
- extend timeout for features/steps/crud_table.py:: see data selected.
- disable cpr for features but "run the cli"

* [ci] disable CPR for all behave tests.

* bugfix: remove duplicated prompt expect.

* [ci] delete CPR env setting.

* Revert "[ci] delete CPR env setting."

This reverts commit fe4d5b565e.

* revert the extending timeout back.

* [ci] test when didn't disable CPR.

* Revert "[ci] test when didn't disable CPR."

This reverts commit d379b1e736.
2020-04-05 20:56:31 -07:00
Georgy Frolov 61c81b05f5 removed py2-related stuff 2020-03-14 10:53:43 +08:00
赖信涛 fd77549754
Deprecate Python2.7. (#1153)
* deprecate Python2.7.

So we can use latest version of prompt-toolit.
Relate: https://github.com/dbcli/pgcli/pull/1149

* black format, remove 2.7 support.

* using version py35 for black.

* Revert "black format, remove 2.7 support."

This reverts commit 4b6d0496cc.

* deprecated py27 using black.

* remove 2.7 from travis.

* update setup.py: delete python 2.7 support.
2020-03-09 20:14:51 -07:00
Martin Matějek 6b2e8df8bd
run black again 2019-10-29 17:47:18 +01:00
Amjith Ramanujam f658e3d1b4 Add a test to verify error message. 2019-10-23 21:00:45 -07:00