Skip to content

Latest commit

 

History

History
1235 lines (962 loc) · 47.6 KB

changelog.rst

File metadata and controls

1235 lines (962 loc) · 47.6 KB

Dev

Features

  • Add a --ping command line option; allows pgcli to replace pg_isready

Bug fixes:

  • Avoid raising NameError when exiting unsuccessfully in some cases

4.1.0 (2024-03-09)

Features:

  • Support PGAPPNAME as an environment variable and --application-name as a command line argument.
  • Add verbose_errors config and v special command which enable the displaying of all Postgres error fields received.
  • Show Postgres notifications.
  • Support sqlparse 0.5.x
  • Add --log-file [filename] cli argument and log-file [filename] special commands to log to an external file in addition to the normal output

Bug fixes:

  • Fix display of "short host" in prompt (with h) for IPv4 addresses ([issue 964](dbcli#964)).
  • Fix backwards display of NOTICEs from a Function ([issue 1443](dbcli#1443))
  • Fix psycopg errors when installing on Windows. ([issue 1413](https://https://github.com/dbcli/pgcli/issues/1413))
  • Use a home-made function to display query duration instead of relying on a third-party library (the general behaviour does not change), which fixes the installation of pgcli on 32-bit architectures ([issue 1451](dbcli#1451))

4.0.1 (2023-10-30)

Internal:

  • Allow stable version of pendulum.

4.0.0 (2023-10-27)

Features:

  • Ask for confirmation when quitting cli while a transaction is ongoing.
  • New destructive_statements_require_transaction config option to refuse to execute a destructive SQL statement if outside a transaction. This option is off by default.
  • Changed the destructive_warning config to be a list of commands that are considered destructive. This would allow you to be warned on create, grant, or insert queries.
  • Destructive warnings will now include the alias dsn connection string name if provided (-D option).
  • pgcli.magic will now work with connection URLs that use TLS client certificates for authentication
  • Have config option to retry queries on operational errors like connections being lost. Also prevents getting stuck in a retry loop.
  • Config option to not restart connection when cancelling a destructive_warning query. By default, it will now not restart.
  • Config option to always run with a single connection.
  • Add comment explaining default LESS environment variable behavior and change example pager setting.
  • Added echo & qecho special commands. ([issue 1335](dbcli#1335)).

Bug fixes:

  • Fix ev not producing a correctly quoted "schema"."view"
  • Fix 'invalid connection option "dsn"' ([issue 1373](dbcli#1373)).
  • Fix explain mode when used with expand, auto_expand, or --explain-vertical-output ([issue 1393](dbcli#1393)).
  • Fix sql-insert format emits NULL as 'None' ([issue 1408](dbcli#1408)).
  • Improve check for prompt-toolkit 3.0.6 ([issue 1416](dbcli#1416)).
  • Allow specifying an alias_map_file in the config that will use predetermined table aliases instead of generating aliases programmatically on the fly
  • Fixed SQL error when there is a comment on the first line: ([issue 1403](dbcli#1403))
  • Fix wrong usage of prompt instead of confirm when confirm execution of destructive query

Internal:

  • Drop support for Python 3.7 and add 3.12.

3.5.0 (2022/09/15):

Features:

  • New formatter is added to export query result to sql format (such as sql-insert, sql-update) like mycli.

Bug fixes:

  • Fix exception when retrieving password from keyring ([issue 1338](dbcli#1338)).
  • Fix using comments with special commands ([issue 1362](dbcli#1362)).
  • Small improvements to the Windows developer experience
  • Fix submitting queries in safe multiline mode ([1360](dbcli#1360)).

Internal:

3.4.1 (2022/03/19)

Bug fixes:

  • Fix the bug with Redshift not displaying word count in status ([related issue](dbcli#1320)).
  • Show the error status for CSV output format.

3.4.0 (2022/02/21)

Features:

  • Add optional support for automatically creating an SSH tunnel to a machine with access to the remote database ([related issue](dbcli#459)).

3.3.1 (2022/01/18)

Bug fixes:

  • Prompt for password when -W is provided even if there is a password in keychain. Fixes #1307.
  • Upgrade cli_helpers to 2.2.1

3.3.0 (2022/01/11)

Features:

  • Add max_field_width setting to config, to enable more control over field truncation ([related issue](dbcli#1250)).
  • Re-run last query via bare watch. (Thanks: Saif Hakim)

Bug fixes:

  • Pin the version of pygments to prevent breaking change

3.2.0

Release date: 2021/08/23

Features:

  • Consider update queries destructive and issue a warning. Change destructive_warning setting to all|moderate|off, vs true|false. (#1239)
  • Skip initial comment in .pg_session even if it doesn't start with '#'
  • Include functions from schemas in search_path. (Amjith Ramanujam)
  • Easy way to show explain output under F5

Bug fixes:

  • Fix issue where syntax_style config value would not have any effect. (#1212)
  • Fix crash because of not found InputMode.REPLACE_SINGLE with prompt-toolkit < 3.0.6
  • Fix comments being lost in config when saving a named query. (#1240)
  • Fix IPython magic for ipython-sql >= 0.4.0
  • Fix pager not being used when output format is set to csv. (#1238)
  • Add function literals random, generate_series, generate_subscripts
  • Fix ANSI escape codes in first line make the cli choose expanded output incorrectly
  • Fix pgcli crashing with virtual pgbouncer database. (#1093)

3.1.0

Features:

  • Make the output more compact by removing the empty newline. (Thanks: laixintao)
  • Add support for using [pspg](https://github.com/okbob/pspg) as a pager (#1102)
  • Update python version in Dockerfile
  • Support setting color for null, string, number, keyword value
  • Support Prompt Toolkit 2
  • Support sqlparse 0.4.x
  • Update functions, datatypes literals for auto-suggestion field
  • Add suggestion for schema in function auto-complete

Bug fixes:

  • Minor typo fixes in pgclirc. (Thanks: anthonydb)
  • Fix for list index out of range when executing commands from a file (#1193). (Thanks: Irina Truong)
  • Move from humanize to pendulum for displaying query durations (#1015)
  • More explicit error message when connecting using DSN alias and it is not found.

3.0.0

Features:

  • Add __main__.py file to execute pgcli as a package directly (#1123).
  • Add support for ANSI escape sequences for coloring the prompt (#1122).
  • Add support for partitioned tables (relkind "p").
  • Add support for pg_service.conf files
  • Add config option show_bottom_toolbar.

Bug fixes:

  • Fix warning raised for using is not to compare string literal
  • Close open connection in completion_refresher thread

Internal:

  • Drop Python2.7, 3.4, 3.5 support. (Thanks: laixintao)
  • Support Python3.8. (Thanks: laixintao)
  • Fix dead link in development guide. (Thanks: BrownShibaDog)
  • Upgrade python-prompt-toolkit to v3.0. (Thanks: laixintao)

2.2.0:

Features:

  • Add \G as a terminator to sql statements that will show the results in expanded mode. This feature is copied from mycli. (Thanks: Amjith Ramanujam)
  • Removed limit prompt and added automatic row limit on queries with no LIMIT clause (#1079) (Thanks: Sebastian Janko)
  • Function argument completions now take account of table aliases (#1048). (Thanks: Owen Stephens)

Bug fixes:

  • Error connecting to PostgreSQL 12beta1 (#1058). (Thanks: Irina Truong and Amjith Ramanujam)
  • Empty query caused error message (#1019) (Thanks: Sebastian Janko)
  • History navigation bindings in multiline queries (#1004) (Thanks: Pedro Ferrari)
  • Can't connect to pgbouncer database (#1093). (Thanks: Irina Truong)
  • Fix broken multi-line history search (#1031). (Thanks: Owen Stephens)
  • Fix slow typing/movement when multi-line query ends in a semicolon (#994). (Thanks: Owen Stephens)
  • Fix for PQconninfo not available in libpq < 9.3 (#1110). (Thanks: Irina Truong)

Internal:

  • Add optional but default squash merge request to PULL_REQUEST_TEMPLATE

2.1.1

Bug fixes:

  • Escape switches to VI navigation mode when not canceling completion popup. (Thanks: Nathan Verzemnieks)
  • Allow application_name to be overridden. (Thanks: raylu)
  • Fix for "no attribute KeyringLocked" (#1040). (Thanks: Irina Truong)
  • Pgcli no longer works with password containing spaces (#1043). (Thanks: Irina Truong)
  • Load keyring only when keyring is enabled in the config file (#1041). (Thanks: Zhaolong Zhu)
  • No longer depend on sqlparse as being less than 0.3.0 with the release of sqlparse 0.3.0. (Thanks: VVelox)
  • Fix the broken support for pgservice . (Thanks: Xavier Francisco)
  • Connecting using socket is broken in current master. (#1053). (Thanks: Irina Truong)
  • Allow usage of newer versions of psycopg2 (Thanks: Telmo "Trooper")
  • Update README in alignment with the usage of newer versions of psycopg2 (Thanks: Alexander Zawadzki)

Internal:

2.1.0

Features:

  • Keybindings for closing the autocomplete list. (Thanks: easteregg)
  • Reconnect automatically when server closes connection. (Thanks: Scott Brenstuhl)

Bug fixes:

  • Avoid error message on the server side if hstore extension is not installed in the current database (#991). (Thanks: Marcin Cieślak)
  • All pexpect submodules have been moved into the pexpect package as of version 3.0. Use pexpect.TIMEOUT (Thanks: Marcin Cieślak)
  • Resizing pgcli terminal kills the connection to postgres in python 2.7 (Thanks: Amjith Ramanujam)
  • Fix crash retrieving server version with --single-connection. (Thanks: Irina Truong)
  • Cannot quit application without reconnecting to database (#1014). (Thanks: Irina Truong)
  • Password authentication failed for user "postgres" when using non-default password (#1020). (Thanks: Irina Truong)

Internal:

  • (Fixup) Clean up and add behave logging. (Thanks: Marcin Cieślak, Dick Marinus)
  • Override VISUAL environment variable for behave tests. (Thanks: Marcin Cieślak)
  • Remove build dir before running sdist, remove stray files from wheel distribution. (Thanks: Dick Marinus)
  • Fix unit tests, unhashable formatted text since new python prompttoolkit version. (Thanks: Dick Marinus)

2.0.2:

Features:

  • Allows passing the -u flag to specify a username. (Thanks: Ignacio Campabadal)
  • Fix for lag in v2 (#979). (Thanks: Irina Truong)
  • Support for multihost connection string that is convenient if you have postgres cluster. (Thanks: Mikhail Elovskikh)

Internal:

2.0.1:

Bug fixes:

  • Tab press on an empty line increases the indentation instead of triggering the auto-complete pop-up. (Thanks: Artur Balabanov)
  • Fix for loading/saving named queries from provided config file (#938). (Thanks: Daniel Egger)
  • Set default port in connect_uri when none is given. (Thanks: Daniel Egger)
  • Fix for error listing databases (#951). (Thanks: Irina Truong)
  • Enable Ctrl-Z to suspend the app (Thanks: Amjith Ramanujam).
  • Fix StopIteration exception raised at runtime for Python 3.7 (Thanks: Amjith Ramanujam).

Internal:

2.0.0:

1.11.0

Features:

  • Respect pset pager on and use pager when output is longer than terminal height (Thanks: Max Rothman)

1.10.3

Bug fixes:

  • Adapt the query used to get functions metadata to PG11 (#919). (Thanks: Lele Gaifax).
  • Fix for error retrieving version in Redshift (#922). (Thanks: Irina Truong)
  • Fix for keyring not disabled properly (#920). (Thanks: Irina Truong)

1.10.2

Features:

1.10.1

Bug fixes:

  • Fix for missing keyring. (Thanks: Kenny Do)
  • Fix for "-l" Flag Throws Error (#909). (Thanks: Irina Truong)

1.10.0

Features:

  • Add quit commands to the completion menu. (Thanks: Jason Ribeiro)
  • Add table formats to \T completion. (Thanks: Jason Ribeiro)
  • Support \ev`, \ef (#754). (Thanks: Catherine Devlin)
  • Add application_name to help identify pgcli connection to database (issue #868) (Thanks: François Pietka)
  • Add --user option, duplicate of --username, the same cli option like psql (Thanks: Alexandr Korsak)

Internal changes:

  • Mark tests requiring a running database server as dbtest (Thanks: Dick Marinus)
  • Add an is_special command flag to MetaQuery (Thanks: Rishi Ramraj)
  • Ported Destructive Warning from mycli.
  • Refactor Destructive Warning behave tests (Thanks: Dick Marinus)

Bug Fixes:

1.9.1:

Features:

  • Change \h format string in prompt to only return the first part of the hostname, up to the first '.' character. Add \H that returns the entire hostname (#858). (Thanks: Andrew Kuchling)
  • Add Color of table by parameter. The color of table is function of syntax style

Internal changes:

  • Add tests, AUTHORS and changelog.rst to release. (Thanks: Dick Marinus)

Bug Fixes:

  • Fix broken pgcli --list command line option (#850). (Thanks: Dmitry B)

1.9.0

Features:

Internal changes:

1.8.2

Features:

  • Use other prompt (prompt_dsn) when connecting using --dsn parameter. (Thanks: Marcin Sztolcman)
  • Include username into password prompt. (Thanks: Bojan Delić)

Internal changes:

  • Use temporary dir as config location in tests. (Thanks: Dmitry B)
  • Fix errors in the tee test (#795 and #797). (Thanks: Irina Truong)
  • Increase timeout for quitting pgcli. (Thanks: Dick Marinus)

Bug Fixes:

  • Do NOT quote the database names in the completion menu (Thanks: Amjith Ramanujam)
  • Fix error in unix_socket_directories (#805). (Thanks: Irina Truong)
  • Fix the --list command line option tries to connect to 'personal' DB (#816). (Thanks: Isank)

1.8.1

Internal changes:

  • Remove shebang and git execute permission from pgcli/main.py. (Thanks: Dick Marinus)
  • Require cli_helpers 0.2.3 (fix #791). (Thanks: Dick Marinus)

1.8.0

Features:

  • Add fish-style auto-suggestion from history. (Thanks: Amjith Ramanujam)
  • Improved formatting of arrays in output (Thanks: Joakim Koljonen)
  • Don't quote identifiers that are non-reserved keywords. (Thanks: Joakim Koljonen)
  • Remove the ... in the continuation prompt and use empty space instead. (Thanks: Amjith Ramanujam)
  • Add conninfo and handle more parameters with c (issue #716) (Thanks: François Pietka)

Internal changes:

  • Preliminary work for a future change in outputting results that uses less memory. (Thanks: Dick Marinus)
  • Remove import workaround for OrderedDict, required for python < 2.7. (Thanks: Andrew Speed)
  • Use less memory when formatting results for display (Thanks: Dick Marinus).
  • Port auto_vertical feature test from mycli to pgcli. (Thanks: Dick Marinus)
  • Drop wcwidth dependency (Thanks: Dick Marinus)

Bug Fixes:

  • Fix the way we get host when using DSN (issue #765) (Thanks: François Pietka)
  • Add missing keyword COLUMN after DROP (issue #769) (Thanks: François Pietka)
  • Don't include arguments in function suggestions for backslash commands (Thanks: Joakim Koljonen)
  • Optionally use POSTGRES_USER, POSTGRES_HOST POSTGRES_PASSWORD from environment (Thanks: Dick Marinus)

1.7.0

  • Refresh completions after COMMIT or ROLLBACK. (Thanks: Irina Truong)
  • Fixed DSN aliases not being read from custom pgclirc (issue #717). (Thanks: Irina Truong).
  • Use dbcli's Homebrew tap for installing pgcli on macOS (issue #718) (Thanks: Thomas Roten).
  • Only set LESS environment variable if it's unset. (Thanks: Irina Truong)
  • Quote schema in SET SCHEMA statement (issue #469) (Thanks: Irina Truong)
  • Include arguments in function suggestions (Thanks: Joakim Koljonen)
  • Use CLI Helpers for pretty printing query results (Thanks: Thomas Roten).
  • Skip serial columns when expanding * for INSERT INTO foo(* (Thanks: Joakim Koljonen).
  • Command line option to list databases (issue #206) (Thanks: François Pietka)

1.6.0

Features:

  • Add time option for prompt (Thanks: Gustavo Castro)
  • Suggest objects from all schemas (not just those in search_path) (Thanks: Joakim Koljonen)
  • Casing for column headers (Thanks: Joakim Koljonen)
  • Allow configurable character to be used for multi-line query continuations. (Thanks: Owen Stephens)
  • Completions after ORDER BY and DISTINCT now take account of table aliases. (Thanks: Owen Stephens)
  • Narrow keyword candidates based on previous keyword. (Thanks: Étienne Bersac)
  • Opening an external editor will edit the last-run query. (Thanks: Thomas Roten)
  • Support query options in postgres URIs such as ?sslcert=foo.pem (Thanks: Alexander Schmolck)

Bug fixes:

  • Fixed external editor bug (issue #668). (Thanks: Irina Truong).
  • Standardize command line option names. (Thanks: Russell Davies)
  • Improve handling of lock_not_available error (issue #700). (Thanks: Jackson Popkin)
  • Fixed user option precedence (issue #697). (Thanks: Irina Truong).

Internal changes:

1.5.1

Features:

  • Better suggestions when editing functions (Thanks: Joakim Koljonen)
  • Command line option for --less-chatty. (Thanks: tk)
  • Added MATERIALIZED VIEW keywords. (Thanks: Joakim Koljonen).

Bug fixes:

  • Support unicode chars in expanded mode. (Thanks: Amjith Ramanujam)
  • Fixed "set_session cannot be used inside a transaction" when using dsn. (Thanks: Irina Truong).

1.5.0

Features:

Bug Fixes:

Internal Changes:

1.4.0

Features:

Bug Fixes:

Internal Changes:

  • Set default data_formatting to nothing. (Thanks: Amjith Ramanujam).
  • Increased minimum prompt_toolkit requirement to 1.0.9. (Thanks: Irina Truong).

1.3.1

Bug Fixes:

  • Fix a crashing bug due to sqlparse upgrade. (Thanks: Darik Gamble)

1.3.0

IMPORTANT: Python 2.6 is not officially supported anymore.

Features:

  • Add delimiters to displayed numbers. This can be configured via the config file. (Thanks: Sergii).
  • Fix broken 'SHOW ALL' in redshift. (Thanks: Manuel Barkhau).
  • Support configuring keyword casing preferences. (Thanks: Darik Gamble).
  • Add a new multi_line_mode option in config file. The values can be psql or safe. (Thanks: Joakim Koljonen) Setting multi_line_mode = safe will make sure that a query will only be executed when Alt+Enter is pressed.

Bug Fixes:

  • Fix crash bug with leading parenthesis. (Thanks: Joakim Koljonen).
  • Remove cumulative addition of timing data. (Thanks: Amjith Ramanujam).
  • Handle unrecognized keywords gracefully. (Thanks: Darik Gamble)
  • Use raw strings in regex specifiers. This preemptively fixes a crash in Python 3.6. (Thanks Lele Gaifax)

Internal Changes:

1.2.0

Features:

  • Add more specifiers to pgcli prompt. (Thanks: Julien Rouhaud).
    \p for port info \# for super user and \i for pid.
  • Add watch command to periodically execute a command. (Thanks: Stuart Quin).
    > SELECT * FROM django_migrations; \watch 1 /* Runs the command every second */
  • Add command-line option --single-connection to prevent pgcli from using multiple connections. (Thanks: Joakim Koljonen).
  • Add priority to the suggestions to sort based on relevance. (Thanks: Joakim Koljonen).
  • Configurable null format via the config file. (Thanks: Adrian Dries).
  • Add support for CTE aware auto-completion. (Thanks: Darik Gamble).
  • Add host and user information to default pgcli prompt. (Thanks: Lim H).
  • Better scoping for tables in insert statements to improve suggestions. (Thanks: Joakim Koljonen).

Bug Fixes:

  • Do not install setproctitle on cygwin. (Thanks: Janus Troelsen).
  • Work around sqlparse crashing after AS keyword. (Thanks: Joakim Koljonen).
  • Fix a crashing bug with named queries. (Thanks: Joakim Koljonen).
  • Replace timestampz alias since AWS Redshift does not support it. (Thanks: Tahir Butt).
  • Prevent pgcli from hanging indefinitely when Postgres instance is not running. (Thanks: Darik Gamble)

Internal Changes:

1.1.0

Features:

Bugs:

  • Fix the crash at startup while parsing the postgres url with port number. (Thanks: Eric Wald)
  • Fix the crash with Redshift databases. (Thanks: Darik Gamble)

Internal Changes:

  • Upgrade pgspecial to 1.5.0 and above.

1.0.0

Features:

  • Upgrade to prompt-toolkit 1.0.0. (Thanks: Jonathan Slenders).
  • Add support for o command to redirect query output to a file. (Thanks: Tim Sanders).
  • Add i path completion. (Thanks: Anthony Lai).
  • Connect to a dsn saved in config file. (Thanks: Rodrigo Ramírez Norambuena).
  • Upgrade sqlparse requirement to version 0.1.19. (Thanks: Fernando L. Canizo).
  • Add timestamptz to DATE custom extension. (Thanks: Fernando Mora).
  • Ensure target dir exists when copying config. (Thanks: David Szotten).
  • Handle dates that fall in the B.C. range. (Thanks: Stuart Quin).
  • Pager is selected from config file or else from environment variable. (Thanks: Fernando Mora).
  • Add support for Amazon Redshift. (Thanks: Timothy Cleaver).
  • Add support for Postgres 8.x. (Thanks: Timothy Cleaver and Darik Gamble)
  • Don't error when completing parameter-less functions. (Thanks: David Szotten).
  • Concat and return all available notices. (Thanks: Stuart Quin).
  • Handle unicode in record type. (Thanks: Amjith Ramanujam).
  • Added humanized time display. Connect #396. (Thanks: Irina Truong).
  • Add EXPLAIN keyword to the completion list. (Thanks: Amjith Ramanujam).
  • Added sdist upload to release script. (Thanks: Irina Truong).
  • Sort completions based on most recently used. (Thanks: Darik Gamble)
  • Expand '*' into column list during completion. This can be triggered by hitting <tab> after the '*' character in the sql while typing. (Thanks: Joakim Koljonen)
  • Add a limit to the warning about too many rows. This is controlled by a new config value in ~/.config/pgcli/config. (Thanks: Anže Pečar)
  • Improved argument list in function parameter completions. (Thanks: Joakim Koljonen)
  • Column suggestions after the COLUMN keyword. (Thanks: Darik Gamble)
  • Filter out trigger implemented functions from the suggestion list. (Thanks: Daniel Rocco)
  • State of the art JOIN clause completions that suggest entire conditions. (Thanks: Joakim Koljonen)
  • Suggest fully formed JOIN clauses based on Foreign Key relations. (Thanks: Joakim Koljonen)
  • Add support for dx meta command to list the installed extensions. (Thanks: Darik Gamble)
  • Add support for copy command. (Thanks: Catherine Devlin)

Bugs:

  • Fix bug where config writing would leave a '~' dir. (Thanks: James Munson).
  • Fix auto-completion breaking for table names with caps. (Thanks: Anthony Lai).
  • Fix lexical ordering bug. (Thanks: Anthony Lai).
  • Use lexical order to break ties when fuzzy matching. (Thanks: Daniel Rocco).
  • Fix the bug in auto-expand mode when there are no rows to display. (Thanks: Amjith Ramanujam).
  • Fix broken i after #395. (Thanks: David Szotten).
  • Fix multi-way joins in auto-completion. (Thanks: Darik Gamble)
  • Display null values as <null> in expanded output. (Thanks: Amjith Ramanujam).
  • Robust support for Postgres version less than 9.x. (Thanks: Darik Gamble)

Internal Changes:

  • Update config file location in README. (Thanks: Ari Summer).
  • Explicitly add wcwidth as a dependency. (Thanks: Amjith Ramanujam).
  • Add tests for the format_output. (Thanks: Amjith Ramanujam).
  • Lots of tests for pgcompleter. (Thanks: Darik Gamble).
  • Update pgspecial dependency to 1.4.0.

0.20.1

Bug Fixes:

  • Fixed logging in Windows by switching the location of log and history file based on OS. (Thanks: Amjith, Darik Gamble, Irina Truong).

0.20.0

Features:

  • Perform auto-completion refresh in background. (Thanks: Amjith, Darik Gamble, Irina Truong). When the auto-completion entries are refreshed, the update now happens in a background thread. This means large databases with thousands of tables are handled without blocking.
  • Add CONCURRENTLY to keyword completion. (Thanks: Johannes Hoff).
  • Add support for \h command. (Thanks: Stuart Quin). This is a huge deal. Users can now get help on an SQL command by typing: \h COMMAND_NAME in the pgcli prompt.
  • Add support for \x auto. (Thanks: Stuart Quin). \\x auto will automatically switch to expanded mode if the output is wider than the display window.
  • Don't hide functions from pg_catalog. (Thanks: Darik Gamble).
  • Suggest set-returning functions as tables. (Thanks: Darik Gamble). Functions that return table like results will now be suggested in places of tables.
  • Suggest fields from functions used as tables. (Thanks: Darik Gamble).
  • Using pgspecial as a separate module. (Thanks: Irina Truong).
  • Make "enter" key behave as "tab" key when the completion menu is displayed. (Thanks: Matheus Rosa).
  • Support different error-handling options when running multiple queries. (Thanks: Darik Gamble). When on_error = STOP in the config file, pgcli will abort execution if one of the queries results in an error.
  • Hide the password displayed in the process name in ps. (Thanks: Stuart Quin)

Bug Fixes:

  • Fix the ordering bug in \d+ display, this bug was displaying the wrong table name in the reference. (Thanks: Tamas Boros).
  • Only show expanded layout if valid list of headers provided. (Thanks: Stuart Quin).
  • Fix suggestions in compound join clauses. (Thanks: Darik Gamble).
  • Fix completion refresh in multiple query scenario. (Thanks: Darik Gamble).
  • Fix the broken timing information.
  • Fix the removal of whitespaces in the output. (Thanks: Jacek Wielemborek)
  • Fix PyPI badge. (Thanks: Artur Dryomov).

Improvements:

  • Move config file to ~/.config/pgcli/config instead of ~/.pgclirc (Thanks: inkn).
  • Move literal definitions to standalone JSON files. (Thanks: Darik Gamble).

Internal Changes:

  • Improvements to integration tests to make it more robust. (Thanks: Irina Truong).

0.19.2

Features:

  • Autocompletion for database name in c and connect. (Thanks: Darik Gamble).
  • Improved multiline query support by correctly handling open quotes. (Thanks: Darik Gamble).
  • Added pager command.
  • Enhanced i to run multiple queries and display the results for each of them
  • Added keywords to suggestions after WHERE clause.
  • Enabled autocompletion in named queries. (Thanks: Irina Truong).
  • Path to .pgclirc can be specified in command line. (Thanks: Irina Truong).
  • Added support for pg_service_conf file. (Thanks: Irina Truong).
  • Added custom styles. (Contributor: Darik Gamble).

Internal Changes:

BugFixes:

  • Fixed the completer crashing on invalid SQL. (Thanks: Darik Gamble).
  • Fixed unicode issues, updated tests and fixed broken tests.

0.19.1

BugFixes:

  • Fix an autocompletion bug that was crashing the completion engine when unknown keyword is entered. (Thanks: Darik Gamble)

0.19.0

Features:

  • Wider completion menus can be enabled via the config file. (Thanks: Jonathan Slenders)

    Open the config file (~/.pgclirc) and check if you have wider_completion_menu option available. If not add it in and set it to True.

  • Completion menu now has metadata information such as schema, table, column, view, etc., next to the suggestions. (Thanks: Darik Gamble)

  • Customizable history file location via config file. (Thanks: Çağatay Yüksel)

    Add this line to your config file (~/.pgclirc) to customize where to store the history file.

history_file = /path/to/history/file
  • Add support for running queries from a file using \i special command. (Thanks: Michael Kaminsky)

BugFixes:

  • Always use utf-8 for database encoding regardless of the default encoding used by the database.
  • Fix for None dereference on \d schemaname. with sequence. (Thanks: Nathan Jhaveri)
  • Fix a crashing bug in the autocompletion engine for some JOIN queries.
  • Handle KeyboardInterrupt in pager and not quit pgcli as a consequence.

Internal Changes:

  • Added more behaviorial tests (Thanks: Irina Truong)
  • Added code coverage to the tests. (Thanks: Irina Truong)
  • Run behaviorial tests as part of TravisCI (Thanks: Irina Truong)
  • Upgraded prompt_toolkit version to 0.45 (Thanks: Jonathan Slenders)
  • Update the minimum required version of click to 4.1.

0.18.0

Features:

  • Add fuzzy matching for the table names and column names.

    Matching very long table/column names are now easier with fuzzy matching. The fuzzy match works like the fuzzy open in SublimeText or Vim's Ctrl-P plugin.

    eg: Typing djmv will match django_migration_views since it is able to match parts of the input to the full table name.

  • Change the timing information to seconds.

    The Command Time and Format Time are now displayed in seconds instead of a unitless number displayed in scientific notation.

  • Support for named queries (favorite queries). (Thanks: Brett Atoms)

    Frequently typed queries can now be saved and recalled using a name using newly added special commands (\n[+], \ns, \nd).

    eg:

# Save a query
pgcli> \ns simple select * from foo
saved

# List all saved queries
pgcli> \n+

# Execute a saved query
pgcli> \n simple

# Delete a saved query
pgcli> \nd simple
  • Pasting queries into the pgcli repl is orders of magnitude faster. (Thanks: Jonathan Slenders)
  • Add support for PGPASSWORD environment variable to pass the password for the postgres database. (Thanks: Irina Truong)
  • Add the ability to manually refresh autocompletions by typing \# or \refresh. This is useful if the database was updated by an external means and you'd like to refresh the auto-completions to pick up the new change.

Bug Fixes:

  • Fix an error when running \d table_name when running on a table with rules. (Thanks: Ali Kargın)
  • Fix a pgcli crash when entering non-ascii characters in Windows. (Thanks: Darik Gamble, Jonathan Slenders)
  • Faster rendering of expanded mode output by making the horizontal separator a fixed length string.
  • Completion suggestions for the \c command are not auto-escaped by default.

Internal Changes:

  • Complete refactor of handling the back-slash commands.
  • Upgrade prompt_toolkit to 0.42. (Thanks: Jonathan Slenders)
  • Change the config file management to use ConfigObj.(Thanks: Brett Atoms)
  • Add integration tests using behave. (Thanks: Irina Truong)

0.17.0

Features:

  • Add support for auto-completing view names. (Thanks: Darik Gamble)
  • Add support for building RPM and DEB packages. (Thanks: dp)
  • Add subsequence matching for completion. (Thanks: Daniel Rocco) Previously completions only matched a table name if it started with the partially typed word. Now completions will match even if the partially typed word is in the middle of a suggestion. eg: When you type 'mig', 'django_migrations' will be suggested.
  • Completion for built-in tables and temporary tables are suggested after entering a prefix of pg_. (Thanks: Darik Gamble)
  • Add place holder doc strings for special commands that are planned for implementation. (Thanks: Irina Truong)
  • Updated version of prompt_toolkit, now matching braces are highlighted. (Thanks: Jonathan Slenders)
  • Added support of \\e command. Queries can be edited in an external editor. (Thanks: Irina Truong) eg: When you type SELECT * FROM \e it will be opened in an external editor.
  • Add special command \dT to show datatypes. (Thanks: Darik Gamble)
  • Add auto-completion support for datatypes in CREATE, SELECT etc. (Thanks: Darik Gamble)
  • Improve the auto-completion in WHERE clause with logical operators. (Thanks: Darik Gamble)

Bug Fixes:

  • Fix the table formatting while printing multi-byte characters (Chinese, Japanese etc). (Thanks: 蔡佳男)
  • Fix a crash when pg_catalog was present in search path. (Thanks: Darik Gamble)
  • Fixed a bug that broke \e when prompt_tookit was updated. (Thanks: François Pietka)
  • Fix the display of triggers as shown in the \d output. (Thanks: Dimitar Roustchev)
  • Fix broken auto-completion for INNER JOIN, LEFT JOIN etc. (Thanks: Darik Gamble)
  • Fix incorrect super() calls in pgbuffer, pgtoolbar and pgcompleter. No change in functionality but protects against future problems. (Thanks: Daniel Rocco)
  • Add missing schema completion for CREATE and DROP statements. (Thanks: Darik Gamble)
  • Minor fixes around cursor cleanup.

0.16.3

Bug Fixes:

  • Add more SQL keywords for auto-complete suggestion.
  • Messages raised as part of stored procedures are no longer ignored.
  • Use postgres flavored syntax highlighting instead of generic ANSI SQL.

0.16.2

Bug Fixes:

  • Fix a bug where the schema qualifier was ignored by the auto-completion. As a result the suggestions for tables vs functions are cleaner. (Thanks: Darik Gamble)
  • Remove scientific notation when formatting large numbers. (Thanks: Daniel Rocco)
  • Add the FUNCTION keyword to auto-completion.
  • Display NULL values as <null> instead of empty strings.
  • Fix the completion refresh when \connect is executed.

0.16.1

Bug Fixes:

  • Fix unicode issues with hstore.
  • Fix a silent error when database is changed using \c.

0.16.0

Features:

  • Add ds special command to show sequences.
  • Add Vi mode for keybindings. This can be enabled by adding 'vi = True' in ~/.pgclirc. (Thanks: Jay Zeng)
  • Add a -v/--version flag to pgcli.
  • Add completion for TEMPLATE keyword and smart-completion for 'CREATE DATABASE blah WITH TEMPLATE <tab>'. (Thanks: Daniel Rocco)
  • Add custom decoders to json/jsonb to emulate the behavior of psql. This removes the unicode prefix (eg: u'Éowyn') in the output. (Thanks: Daniel Rocco)
  • Add df special command to show functions. (Thanks: Darik Gamble)
  • Make suggestions for special commands smarter. eg: dn - only suggests schemas. (Thanks: Darik Gamble)
  • Print out the version and other meta info about pgcli at startup.

Bug Fixes:

  • Fix a rare crash caused by adding new schemas to a database. (Thanks: Darik Gamble)
  • Make dt command honor the explicit schema specified in the arg. (Thanks: Darik Gamble)
  • Print BIGSERIAL type as Integer instead of Float.
  • Show completions for special commands at the beginning of a statement. (Thanks: Daniel Rocco)
  • Allow special commands to work in a multi-statement case where multiple sql statements are separated by semi-colon in the same line.

0.15.4

  • Dummy version to replace accidental PyPI entry deletion.

0.15.3

  • Override the LESS options completely instead of appending to it.

0.15.2

  • Revert back to using psycopg2 as the postgres adapter. psycopg2cffi fails for some tests in Python 3.

0.15.0

Features:

  • Add syntax color styles to config.
  • Add auto-completion for COPY statements.
  • Change Postgres adapter to psycopg2cffi, to make it PyPy compatible. Now pgcli can be run by PyPy.

Bug Fixes:

  • Treat boolean values as strings instead of ints.
  • Make di, dv and dt to be schema aware. (Thanks: Darik Gamble)
  • Make column name display unicode compatible.

0.14.0

Features:

  • Add alias completion support to ON keyword. (Thanks: Irina Truong)
  • Add LIMIT keyword to completion.
  • Auto-completion for Postgres schemas. (Thanks: Darik Gamble)
  • Better unicode handling for datatypes, dbname and roles.
  • Add timing command to time the sql commands. This can be set via config file (~/.pgclirc) using timing = True.
  • Add different table styles for displaying output. This can be changed via config file (~/.pgclirc) using table_format = fancy_grid.
  • Add confirmation before printing results that have more than 1000 rows.

Bug Fixes:

  • Performance improvements to expanded view display (x).
  • Cast bytea files to text while displaying. (Thanks: Daniel Rocco)
  • Added a list of reserved words that should be auto-escaped.
  • Auto-completion is now case-insensitive.
  • Fix the broken completion for multiple sql statements. (Thanks: Darik Gamble)

0.13.0

Features:

  • Add -d/--dbname option to the commandline. eg: pgcli -d database
  • Add the username as an argument after the database. eg: pgcli dbname user

Bug Fixes:

  • Fix the crash when c fails.
  • Fix the error thrown by d when triggers are present.
  • Fix broken behavior on ?. (Thanks: Darik Gamble)

0.12.0

Features:

  • Upgrade to prompt_toolkit version 0.26 (Thanks: https://github.com/macobo) * Adds Ctrl-left/right to move the cursor one word left/right respectively. * Internal API changes.
  • IPython integration through ipython-sql (Thanks: Darik Gamble) * Add an ipython magic extension to embed pgcli inside ipython. * Results from a pgcli query are sent back to ipython.
  • Multiple sql statements in the same line separated by semi-colon. (Thanks: https://github.com/macobo)

Bug Fixes:

  • Fix 'message' attribute not found exception in Python 3. (Thanks: https://github.com/GMLudo)
  • Use the database username as the database name instead of defaulting to OS username. (Thanks: https://github.com/fpietka)
  • Auto-completion for auto-escaped column/table names.
  • Fix i-reverse-search to work in prompt_toolkit version 0.26.

0.11.0

Features:

Bug Fixes:

Improvements: