pgcli 4.5.0__tar.gz → 4.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. {pgcli-4.5.0 → pgcli-4.7.0}/.github/workflows/publish.yml +1 -1
  2. {pgcli-4.5.0 → pgcli-4.7.0}/AUTHORS +8 -0
  3. {pgcli-4.5.0 → pgcli-4.7.0}/PKG-INFO +7 -4
  4. {pgcli-4.5.0 → pgcli-4.7.0}/README.rst +1 -1
  5. {pgcli-4.5.0 → pgcli-4.7.0}/changelog.rst +100 -0
  6. pgcli-4.7.0/pgcli/__init__.py +1 -0
  7. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/main.py +294 -21
  8. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/parseutils/__init__.py +20 -5
  9. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/prompt_utils.py +13 -4
  10. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/sqlcompletion.py +25 -2
  11. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgclirc +7 -0
  12. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgcompleter.py +7 -0
  13. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgexecute.py +12 -4
  14. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/PKG-INFO +7 -4
  15. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/SOURCES.txt +8 -0
  16. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/requires.txt +1 -1
  17. pgcli-4.7.0/pgcli.egg-info/scm_file_list.json +128 -0
  18. pgcli-4.7.0/pgcli.egg-info/scm_version.json +8 -0
  19. {pgcli-4.5.0 → pgcli-4.7.0}/pyproject.toml +7 -6
  20. pgcli-4.7.0/release.py +228 -0
  21. pgcli-4.7.0/tests/features/command_option.feature +38 -0
  22. pgcli-4.7.0/tests/features/file_option.feature +33 -0
  23. pgcli-4.7.0/tests/features/steps/command_option.py +144 -0
  24. pgcli-4.7.0/tests/features/steps/file_option.py +137 -0
  25. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/iocommands.py +10 -10
  26. {pgcli-4.5.0 → pgcli-4.7.0}/tests/parseutils/test_parseutils.py +22 -0
  27. pgcli-4.7.0/tests/test_alias_dsn.py +90 -0
  28. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_main.py +423 -1
  29. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_pgcompleter.py +16 -0
  30. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_pgexecute.py +56 -0
  31. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_sqlcompletion.py +26 -0
  32. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_ssh_tunnel.py +52 -22
  33. pgcli-4.7.0/tests/test_tuples_only.py +69 -0
  34. pgcli-4.5.0/pgcli/__init__.py +0 -1
  35. pgcli-4.5.0/release.py +0 -132
  36. {pgcli-4.5.0 → pgcli-4.7.0}/.coveragerc +0 -0
  37. {pgcli-4.5.0 → pgcli-4.7.0}/.editorconfig +0 -0
  38. {pgcli-4.5.0 → pgcli-4.7.0}/.git-blame-ignore-revs +0 -0
  39. {pgcli-4.5.0 → pgcli-4.7.0}/.github/ISSUE_TEMPLATE.md +0 -0
  40. {pgcli-4.5.0 → pgcli-4.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  41. {pgcli-4.5.0 → pgcli-4.7.0}/.github/workflows/ci.yml +0 -0
  42. {pgcli-4.5.0 → pgcli-4.7.0}/.github/workflows/codeql.yml +0 -0
  43. {pgcli-4.5.0 → pgcli-4.7.0}/.github/workflows/codex-review.yml +0 -0
  44. {pgcli-4.5.0 → pgcli-4.7.0}/.gitignore +0 -0
  45. {pgcli-4.5.0 → pgcli-4.7.0}/.pre-commit-config.yaml +0 -0
  46. {pgcli-4.5.0 → pgcli-4.7.0}/CONTRIBUTING.rst +0 -0
  47. {pgcli-4.5.0 → pgcli-4.7.0}/Dockerfile +0 -0
  48. {pgcli-4.5.0 → pgcli-4.7.0}/LICENSE.txt +0 -0
  49. {pgcli-4.5.0 → pgcli-4.7.0}/MANIFEST.in +0 -0
  50. {pgcli-4.5.0 → pgcli-4.7.0}/RELEASES.md +0 -0
  51. {pgcli-4.5.0 → pgcli-4.7.0}/TODO +0 -0
  52. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/__main__.py +0 -0
  53. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/auth.py +0 -0
  54. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/completion_refresher.py +0 -0
  55. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/config.py +0 -0
  56. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/explain_output_formatter.py +0 -0
  57. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/key_bindings.py +0 -0
  58. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/magic.py +0 -0
  59. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/__init__.py +0 -0
  60. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/formatter/__init__.py +0 -0
  61. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/formatter/sqlformatter.py +0 -0
  62. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/parseutils/ctes.py +0 -0
  63. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/parseutils/meta.py +0 -0
  64. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/parseutils/tables.py +0 -0
  65. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/parseutils/utils.py +0 -0
  66. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/pgliterals/__init__.py +0 -0
  67. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/pgliterals/main.py +0 -0
  68. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/pgliterals/pgliterals.json +0 -0
  69. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/packages/prioritization.py +0 -0
  70. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgbuffer.py +0 -0
  71. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgstyle.py +0 -0
  72. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pgtoolbar.py +0 -0
  73. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli/pyev.py +0 -0
  74. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli-completion.bash +0 -0
  75. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/dependency_links.txt +0 -0
  76. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/entry_points.txt +0 -0
  77. {pgcli-4.5.0 → pgcli-4.7.0}/pgcli.egg-info/top_level.txt +0 -0
  78. {pgcli-4.5.0 → pgcli-4.7.0}/post-install +0 -0
  79. {pgcli-4.5.0 → pgcli-4.7.0}/post-remove +0 -0
  80. {pgcli-4.5.0 → pgcli-4.7.0}/pylintrc +0 -0
  81. {pgcli-4.5.0 → pgcli-4.7.0}/sanity_checks.txt +0 -0
  82. {pgcli-4.5.0 → pgcli-4.7.0}/screenshots/image01.png +0 -0
  83. {pgcli-4.5.0 → pgcli-4.7.0}/screenshots/image02.png +0 -0
  84. {pgcli-4.5.0 → pgcli-4.7.0}/screenshots/kharkiv-destroyed.jpg +0 -0
  85. {pgcli-4.5.0 → pgcli-4.7.0}/screenshots/pgcli.gif +0 -0
  86. {pgcli-4.5.0 → pgcli-4.7.0}/setup.cfg +0 -0
  87. {pgcli-4.5.0 → pgcli-4.7.0}/tests/conftest.py +0 -0
  88. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/__init__.py +0 -0
  89. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/auto_vertical.feature +0 -0
  90. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/basic_commands.feature +0 -0
  91. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/crud_database.feature +0 -0
  92. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/crud_table.feature +0 -0
  93. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/db_utils.py +0 -0
  94. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/environment.py +0 -0
  95. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/expanded.feature +0 -0
  96. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/fixture_data/help.txt +0 -0
  97. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/fixture_data/help_commands.txt +0 -0
  98. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/fixture_data/mock_pg_service.conf +0 -0
  99. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/fixture_utils.py +0 -0
  100. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/iocommands.feature +0 -0
  101. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/named_queries.feature +0 -0
  102. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/pgbouncer.feature +0 -0
  103. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/specials.feature +0 -0
  104. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/__init__.py +0 -0
  105. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/auto_vertical.py +0 -0
  106. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/basic_commands.py +0 -0
  107. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/crud_database.py +0 -0
  108. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/crud_table.py +0 -0
  109. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/expanded.py +0 -0
  110. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/named_queries.py +0 -0
  111. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/pgbouncer.py +0 -0
  112. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/specials.py +0 -0
  113. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/steps/wrappers.py +0 -0
  114. {pgcli-4.5.0 → pgcli-4.7.0}/tests/features/wrappager.py +0 -0
  115. {pgcli-4.5.0 → pgcli-4.7.0}/tests/formatter/__init__.py +0 -0
  116. {pgcli-4.5.0 → pgcli-4.7.0}/tests/formatter/test_sqlformatter.py +0 -0
  117. {pgcli-4.5.0 → pgcli-4.7.0}/tests/metadata.py +0 -0
  118. {pgcli-4.5.0 → pgcli-4.7.0}/tests/parseutils/test_ctes.py +0 -0
  119. {pgcli-4.5.0 → pgcli-4.7.0}/tests/parseutils/test_function_metadata.py +0 -0
  120. {pgcli-4.5.0 → pgcli-4.7.0}/tests/pytest.ini +0 -0
  121. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_application_name.py +0 -0
  122. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_auth.py +0 -0
  123. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_completion_refresher.py +0 -0
  124. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_config.py +0 -0
  125. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_fuzzy_completion.py +0 -0
  126. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_init_commands_simple.py +0 -0
  127. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_naive_completion.py +0 -0
  128. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_pgspecial.py +0 -0
  129. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_prioritization.py +0 -0
  130. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_prompt_utils.py +0 -0
  131. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_rowlimit.py +0 -0
  132. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_smart_completion_multiple_schemata.py +0 -0
  133. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_smart_completion_public_schema_only.py +0 -0
  134. {pgcli-4.5.0 → pgcli-4.7.0}/tests/test_trailing_comments.py +0 -0
  135. {pgcli-4.5.0 → pgcli-4.7.0}/tests/utils.py +0 -0
  136. {pgcli-4.5.0 → pgcli-4.7.0}/tox.ini +0 -0
@@ -65,7 +65,7 @@ jobs:
65
65
  - name: Set up Python
66
66
  uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
67
67
  with:
68
- python-version: '3.13'
68
+ python-version: '3.14'
69
69
 
70
70
  - name: Install dependencies
71
71
  run: uv sync --all-extras -p 3.14
@@ -144,10 +144,18 @@ Contributors:
144
144
  * Jay Knight (jay-knight)
145
145
  * fbdb
146
146
  * Charbel Jacquin (charbeljc)
147
+ * Jeronimo Garcia (bechampion)
148
+ * Diego
147
149
  * Devadathan M B (devadathanmb)
148
150
  * Charalampos Stratakis
149
151
  * Laszlo Bimba (bimlas)
150
152
  * Anjanna
153
+ * Shayan Golshani (shgol)
154
+ * Tommi Kyntölä (kynde)
155
+ * Diego
156
+ * Chris (ChrisJr404)
157
+ * Pieter Ouwerkerk (pouwerkerk)
158
+ * VXNCXNX
151
159
 
152
160
  Creator:
153
161
  --------
@@ -1,10 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pgcli
3
- Version: 4.5.0
3
+ Version: 4.7.0
4
4
  Summary: CLI for Postgres Database. With auto-completion and syntax highlighting.
5
5
  Author-email: Pgcli Core Team <pgcli-dev@googlegroups.com>
6
- License: BSD
6
+ License-Expression: BSD-3-Clause
7
7
  Project-URL: Homepage, https://pgcli.com
8
+ Project-URL: Changelog, https://github.com/dbcli/pgcli/blob/main/changelog.rst
9
+ Project-URL: Repository, https://github.com/dbcli/pgcli/
10
+ Project-URL: Issues, https://github.com/dbcli/pgcli/issues
8
11
  Classifier: Intended Audience :: Developers
9
12
  Classifier: Operating System :: Unix
10
13
  Classifier: Programming Language :: Python
@@ -29,7 +32,7 @@ Requires-Dist: Pygments>=2.0
29
32
  Requires-Dist: prompt_toolkit<4.0.0,>=2.0.6
30
33
  Requires-Dist: psycopg>=3.0.14; sys_platform != "win32"
31
34
  Requires-Dist: psycopg-binary>=3.0.14; sys_platform == "win32"
32
- Requires-Dist: sqlparse<0.6,>=0.3.0
35
+ Requires-Dist: sqlparse<0.7,>=0.3.0
33
36
  Requires-Dist: configobj>=5.0.6
34
37
  Requires-Dist: cli_helpers[styles]>=2.4.0
35
38
  Requires-Dist: setproctitle>=1.1.9; sys_platform != "win32" and "CYGWIN" not in sys_platform
@@ -405,7 +408,7 @@ which is quite literally the backbone library, that made this app possible.
405
408
  Jonathan has also provided valuable feedback and support during the development
406
409
  of this app.
407
410
 
408
- `Click <https://click.pocoo.org/>`_ is used for command line option parsing
411
+ `Click <https://click.palletsprojects.com/>`_ is used for command line option parsing
409
412
  and printing error messages.
410
413
 
411
414
  Thanks to `psycopg <https://www.psycopg.org/>`_ for providing a rock solid
@@ -352,7 +352,7 @@ which is quite literally the backbone library, that made this app possible.
352
352
  Jonathan has also provided valuable feedback and support during the development
353
353
  of this app.
354
354
 
355
- `Click <https://click.pocoo.org/>`_ is used for command line option parsing
355
+ `Click <https://click.palletsprojects.com/>`_ is used for command line option parsing
356
356
  and printing error messages.
357
357
 
358
358
  Thanks to `psycopg <https://www.psycopg.org/>`_ for providing a rock solid
@@ -1,3 +1,101 @@
1
+ Upcoming
2
+ ========
3
+
4
+
5
+
6
+ 4.7.0 (2026-09-19)
7
+ ==================
8
+
9
+ Features:
10
+ ---------
11
+ * Add support for `single-command` to run a SQL command and exit.
12
+ * Command line option `-c` or `--command`.
13
+ * You can specify multiple times.
14
+ * Runs one statement at a time, like `-f`, and can be combined with `-f`:
15
+ both run, the same way psql does.
16
+ * Add support for forcing destructive commands without confirmation.
17
+ * Command line option `-y` or `--yes`.
18
+ * Skips the destructive command confirmation prompt when enabled.
19
+ * Useful for automated scripts and CI/CD pipelines.
20
+ * Add a ``-t``/``--tuples-only`` command line option that prints the rows and
21
+ nothing else, matching psql: no column headers, no title, no status footer
22
+ and no timing line. The configured table format is left untouched, so ``\T``
23
+ still reports it and can still change it mid-session.
24
+ * Add support for executing SQL commands from file and exit.
25
+ * Command line option `-f` or `--file`.
26
+ * Multiple files can be specified.
27
+ * Files run one statement at a time, like psql, so a ``\watch`` only
28
+ repeats its own statement (and a bare ``\watch`` re-runs the statement
29
+ before it), instead of re-running the whole file. A backslash command
30
+ spans only its own line, also like psql, so a metacommand followed by
31
+ SQL on the next line does not swallow the SQL.
32
+
33
+ Bug fixes:
34
+ ----------
35
+ * Fix special commands being broken while explain mode (F5) is on. Every input
36
+ was prefixed with ``EXPLAIN (...)`` and sent to the server as SQL, including
37
+ backslash commands and the bare words ``exit``/``quit``, so ``\q``, ``\d``,
38
+ ``\i``, named queries and ``\G`` all failed with ``syntax error at or near
39
+ "\"`` and there was no way to leave explain mode or quit. Special commands
40
+ are now detected first and the EXPLAIN prefix is applied only to real SQL.
41
+ * Fix ``-l``/``--list`` and ``--ping`` discarding the connection string. The
42
+ positional argument was unconditionally replaced with ``postgres``, which
43
+ also threw away a connection URI or ``key=value`` conninfo (host, user, port,
44
+ ``sslmode``, everything) and silently fell back to a local socket connection
45
+ as the OS user. The database argument is now kept, like psql; only when no
46
+ database is given at all does the listing connect to ``postgres``.
47
+
48
+ 4.6.0 (2026-08-26)
49
+ ==================
50
+
51
+ Internal:
52
+ ---------
53
+ * Make the external-editor behave scenario less flaky: the ``expect_exact``
54
+ timeouts in ``tests/features/steps/iocommands.py`` were as low as 1-2
55
+ seconds, which intermittently expired on loaded CI runners and reported
56
+ ``Scenario: edit sql in file with external editor`` as an error. Raised to 10
57
+ seconds; passing runs are unaffected because pexpect returns as soon as the
58
+ expected text appears.
59
+
60
+ Bug fixes:
61
+ ----------
62
+ * Fix ``--list-dsn`` and ``-D``/``--dsn`` not finding ``[alias_dsn]`` entries.
63
+ On a fresh install (no config written yet) ``--list-dsn`` printed a misleading
64
+ "Invalid DSNs found" error. ``--list-dsn`` now treats a missing config or
65
+ ``[alias_dsn]`` section as simply nothing to list, without writing a config
66
+ file, and ``-D`` resolves the alias from the config already loaded at startup
67
+ instead of reading it again ([issue 1489](https://github.com/dbcli/pgcli/issues/1489)).
68
+ * Restore cursor shape behaviour for Emacs mode
69
+ * Fix ``TypeError: cannot use a string pattern on a bytes-like object`` when
70
+ completion metadata comes back as bytes (e.g. ``SQL_ASCII`` client encoding).
71
+ * Suggest columns, not datatypes, after a column literally named ``type`` in a ``SELECT`` list.
72
+ * Allow ``sqlparse`` 0.6.x. sqlparse 0.6.0 fixes several denial-of-service
73
+ issues (CVE-2026-59893, CVE-2026-54284, CVE-2026-71491) and a string-escaping
74
+ bug (CVE-2026-59894); the previous ``<0.6`` cap prevented users from
75
+ installing the fixed release.
76
+ * Detect an unconditional ``UPDATE`` with ``sqlparse`` rather than splitting on whitespace, so a
77
+ ``WHERE`` appearing inside a string literal no longer suppresses the destructive-statement warning.
78
+
79
+ Features:
80
+ ---------
81
+ * Add a ``--timeout`` command line option and a ``connect_timeout`` config value
82
+ (default 30 seconds) for the connection timeout. Precedence, highest first:
83
+ ``--timeout``, then a ``connect_timeout`` in the connection string, then
84
+ ``$PGCONNECT_TIMEOUT``, then the config value. libpq's own default is 0,
85
+ which waits until the operating system gives up on the TCP connection, so an
86
+ unreachable host used to hang for minutes.
87
+ * Honor the ``PSQL_EDITOR`` environment variable when opening the external
88
+ editor (``\\e``, ``\\ev``, ``\\ef``, ``\\ne``), matching psql's precedence of
89
+ ``PSQL_EDITOR``, then ``EDITOR``, then ``VISUAL`` ([issue 1398](https://github.com/dbcli/pgcli/issues/1398)).
90
+ * Add ``\\ne <name>`` to edit a named query in the external editor. Loads the
91
+ named query's SQL into ``$EDITOR``; on save it is written back to the
92
+ ``[named queries]`` section, creating it if it does not exist. Complements
93
+ ``\\ns`` (save) by making longer queries easier to edit ([issue 1430](https://github.com/dbcli/pgcli/issues/1430)).
94
+ * Enable ``.pgpass`` support for SSH tunnel connections.
95
+ * Preserve original hostname for ``.pgpass`` lookup using PostgreSQL's ``hostaddr`` parameter
96
+ * SSH tunnel endpoint (``127.0.0.1``) is passed via ``hostaddr``, keeping ``host`` for ``.pgpass``
97
+ * Works with both DSN and host/port connection styles
98
+
1
99
  4.5.0 (2026-06-02)
2
100
  ==================
3
101
 
@@ -20,6 +118,8 @@ Bug fixes:
20
118
  * Fix trailing SQL comments preventing query submission and execution.
21
119
  * ``SELECT 1; -- note`` now submits correctly in multiline mode
22
120
  * ``rstrip(";")`` in ``pgexecute.py`` now handles comments after the semicolon
121
+ * Fix completion crash when tables are created during refresh.
122
+ * Suggest columns after `GROUP BY`, like `ORDER BY` already does.
23
123
 
24
124
  4.4.0 (2025-12-24)
25
125
  ==================
@@ -0,0 +1 @@
1
+ __version__ = "4.6.0"