Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pglast

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pglast

PostgreSQL Languages AST and statements prettifier

  • 7.0
  • PyPI
  • Socket score

Maintainers
1

.. -- coding: utf-8 -- .. :Project: pglast — PostgreSQL Languages AST .. :Created: mer 02 ago 2017 14:49:24 CEST .. :Author: Lele Gaifax lele@metapensiero.it .. :License: GNU General Public License version 3 or later .. :Copyright: © 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Lele Gaifax ..

======== pglast

PostgreSQL Languages AST and statements prettifier

:Author: Lele Gaifax :Contact: lele@metapensiero.it :License: GNU General Public License version 3 or later__ :Status: |build| |doc| |codecov| :Version: 7__

__ https://www.gnu.org/licenses/gpl.html __ https://pglast.readthedocs.io/en/v7/development.html#history

.. |build| image:: https://github.com/lelit/pglast/actions/workflows/ci.yml/badge.svg?branch=v7 :target: https://github.com/lelit/pglast/actions/workflows/ci.yml :alt: Build status .. |doc| image:: https://readthedocs.org/projects/pglast/badge/?version=v7 :target: https://readthedocs.org/projects/pglast/builds/ :alt: Documentation status .. |codecov| image:: https://codecov.io/gh/lelit/pglast/branch/v3/graph/badge.svg?token=A90D8tWnft :target: https://codecov.io/gh/lelit/pglast :alt: Test coverage status

This is a Python 3 module that exposes the parse tree of a PostgreSQL__ statement (extracted by the almost standard PG parser repackaged as a standalone static library by libpg_query__) as set of interconnected nodes, usually called an abstract syntax tree.

__ https://www.postgresql.org/ __ https://github.com/pganalyze/libpg_query

See a more detailed introduction__ in the documentation_.

__ https://pglast.readthedocs.io/en/v7/introduction.html

Installation

As usual, the easiest way is with pip::

$ pip install pglast

Alternatively you can clone the repository::

$ git clone https://github.com/lelit/pglast.git --recursive

and install from there::

$ pip install ./pglast

Development

There is a set of makefiles implementing the most common operations, a make help will show a brief table of contents. A comprehensive test suite, based on pytest__, covers__ nearly 99% of the source lines.

__ https://docs.pytest.org/en/latest/ __ https://codecov.io/gh/lelit/pglast/branch/v7/

Documentation

Latest documentation is hosted by Read the Docs__ at https://pglast.readthedocs.io/en/v7

__ https://readthedocs.org/

.. -- coding: utf-8 --

.. _changes:

Changes

Version 7 #########

7.0 (2024-11-13)


- No visible changes


7.0.dev1 (2024-11-01)

7.0.dev0 (2024-10-31)


- No visible changes with respect to v6, apart from the support for new/revised syntaxes of
  `PostgreSQL 17`__

  __ https://www.postgresql.org/docs/17/release-17.html

~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~

- Target PostgreSQL 17, thanks to libpg_query `17-latest-dev`__

  __ https://github.com/pganalyze/libpg_query/tree/17-latest-dev

- Require Python >= 3.9


Version 6
#########

6.10 (2024-11-01)
~~~~~~~~~~~~~~~~~

- Upgrade libpg_query to `16-5.2.0`__

  __ https://github.com/pganalyze/libpg_query/releases/tag/16-5.2.0


6.9 (2024-10-31)
~~~~~~~~~~~~~~~~

- Fix regression introduced by recent modification to the ``CommonTableExpr`` printer that
  impacted on the ``RawStream`` renderer (issue `#163`__)

  __ https://github.com/lelit/pglast/issues/163

- Expose the ``RawStream`` renderer in the CLI tool with a new ``--normalize`` option


6.8 (2024-10-29)
~~~~~~~~~~~~~~~~

- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to
  `plpgsql` (issue `#156`__)

  __ https://github.com/pganalyze/libpg_query/commit/06670290ad39e61805ecacbc6267df61f6ae3d91
  __ https://github.com/lelit/pglast/issues/156


6.7 (2024-10-28)
~~~~~~~~~~~~~~~~

- Generate wheels on PyPI using Python 3.13.0 final release, thanks to cibuildwheel `2.21.3`__

  __ https://cibuildwheel.pypa.io/en/stable/changelog/#v2213

- Improve ``CommonTableExpr`` printer, reducing horizontal space waste


6.6 (2024-09-30)
~~~~~~~~~~~~~~~~

- Make recently introduced doctest related to issue #88 work on different Python versions


6.5 (2024-09-29)
~~~~~~~~~~~~~~~~

- Fix glitch when using the ``--preserve-comments`` flag (issue `#159`__)

  __ https://github.com/lelit/pglast/issues/159

- Finally add a note to ``parse_plpgsql()`` documentation mentioning how it differs from
  ``parse_sql()`` (issue `#88`__)

  __ https://github.com/lelit/pglast/issues/88


6.4 (2024-09-28)
~~~~~~~~~~~~~~~~

- Fix issue with deserialization of deeply nested ASTs (issue `#153`__)

  __ https://github.com/lelit/pglast/issues/153

- Upgrade libpg_query to not-yet-publicly-released commit__, to solve an issue related to
  `plpgsql` (issue `#154`__)

  __ https://github.com/pganalyze/libpg_query/commit/680f5ee67c6fdae497c8d1edfadd02b9b8eac74f
  __ https://github.com/lelit/pglast/issues/154


6.3 (2024-08-06)
~~~~~~~~~~~~~~~~

- Fix ``SEQUENCE NAME`` in ``create_seq_stmt_def_elem`` (`PR #151`__), thanks to orages

  __ https://github.com/lelit/pglast/pull/151

- Generate wheels on PyPI using Python 3.13.0rc1 release, thanks to cibuildwheel `2.20.0`__

  __ https://cibuildwheel.pypa.io/en/stable/changelog/#v2200

- Use `Cython 3.0.11`__

  __ https://github.com/cython/cython/blob/master/CHANGES.rst#3011-2024-08-05


6.2 (2024-02-01)
~~~~~~~~~~~~~~~~

- Almost no-op release to fix issue `144`__, producing correct wheels for macOS arm64

  __ https://github.com/lelit/pglast/issues/144

6.1 (2024-01-22)
~~~~~~~~~~~~~~~~

- Inherit fix for issue `143`__ from `version 5`_

  __ https://github.com/lelit/pglast/issues/143


6.0 (2024-01-22)
~~~~~~~~~~~~~~~~

- Produce wheels for macOS arm64


6.0.dev2 (2024-01-21)

6.0.dev1 (2024-01-11)


- Re-enable Linux 32bit wheels, thanks to libpg_query to `16-5.1.0`__

  __ https://github.com/pganalyze/libpg_query/releases/tag/16-5.1.0


6.0.dev0 (2023-12-29)
**Breaking changes**

Version 5 #########

5.9 (2024-01-22)


- Fix issue `143`__, affecting ``AlterOwnerStmt`` and ``RenameStmt`` printers

  __ https://github.com/lelit/pglast/issues/143


5.8 (2024-01-11)

5.7 (2023-12-23)


- Use `Cython 3.0.7`__

  __ https://github.com/cython/cython/blob/master/CHANGES.rst#307-2023-12-19

- Update libpg_query to `15-4.2.4`__

  __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.4


5.6 (2023-12-07)

5.5 (2023-10-07)


- Use `Cython 3.0.3`__

  __ https://github.com/cython/cython/blob/master/CHANGES.rst#303-2023-10-05

- Produce wheels using final Python 3.12 release, thanks to ``cibuildwheel`` `2.16.2`__

  __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2162


5.4 (2023-08-24)

5.3 (2023-08-05)


- Update libpg_query to `15-4.2.3`__

  __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.3


5.2 (2023-05-20)

5.1 (2023-02-28)


- Merge `version 4.2`__ changes

  __ `4.2 (2023-02-27)`_


5.0 (2023-02-19)
  • No changes

5.0.dev1 (2023-02-11)


- Update libpg_query to `15-4.2.0`__

  __ https://github.com/pganalyze/libpg_query/releases/tag/15-4.2.0

~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~

- Change the type of the ``ast.Float`` value from ``Decimal`` to ``str``

  Using a ``Decimal`` implies potential differences in the representation of floating numbers,
  and already caused issues (`#91`__ and `#100`__) in the past, making it impossible to render,
  say, ``SELECT 0.0e1``, due to the fact that ``Decimal('0.0e1')`` resolves to
  ``Decimal('0')``.

  __ https://github.com/lelit/pglast/issues/91
  __ https://github.com/lelit/pglast/issues/100


5.0.dev0 (2022-12-19)
**Breaking changes**

Version 4 #########

4.5 (unreleased)


- Use `Cython 3.0.2`__

  __ https://github.com/cython/cython/blob/master/CHANGES.rst#302-2023-08-27


4.4 (2023-08-24)

4.3 (2023-04-27)


- Fix `serialization issue`__ when column's ``DEFAULT`` value is an expression

  __ https://github.com/pganalyze/libpg_query/issues/188


4.2 (2023-02-27)
  • Handle special syntax required by SET TIME ZONE INTERVAL '-08:00' hour to minute

  • Fix mistype mapping of raw C "long" and "double" attributes, that were decorated with the wrong Python type

4.1 (2022-12-19)


- Fix serialization glitches introduced by “Avoid overly abundancy of parentheses in
  expressions” (to be precise, by this__ commit)

  __ https://github.com/lelit/pglast/commit/6cfe75eea80f9c9bec4ba467e7ec1ec0796020de


4.0 (2022-12-12)

4.0.dev0 (2022-11-24)


- Update libpg_query to `14-3.0.0`__

  __ https://github.com/pganalyze/libpg_query/blob/14-latest/CHANGELOG.md#14-300---2022-11-17

- Avoid overly abundancy of parentheses in expressions

- Prefer ``SELECT a FROM b LIMIT ALL`` to ``... LIMIT NONE``

~~~~~~~~~~~~~~~~~~~~
**Breaking changes**
~~~~~~~~~~~~~~~~~~~~

- Target PostgreSQL 14

- The wrapper classes used in previous versions, implemented in ``pglast.node``, are gone: now
  everything works on top of the ``AST`` classes (`issue #80`__)

  __ https://github.com/lelit/pglast/issues/80

- The ``Ancestor`` class is not iterable anymore: it was an internal implementation facility,
  now moved to a ``_iter_members()`` method


Version 3
#########

3.18 (2023-08-24)
~~~~~~~~~~~~~~~~~

- Fix ``BooleanTest`` printer, enclosing expression within parens in more cases (`issue
  #129`__)

  __ https://github.com/lelit/pglast/issues/129

- Fix ``Constraint`` printer, avoiding repetition of "DEFERRABLE INITIALLY DEFERRED" on some
  kind of constraints (`issue #130`__)

  __ https://github.com/lelit/pglast/issues/130


3.17 (2022-11-04)
~~~~~~~~~~~~~~~~~

- Fix ``AlterSubscriptionStmt`` printer, handling "SET PUBLICATION" without options


3.16 (2022-11-03)
~~~~~~~~~~~~~~~~~

- Update libpg_query to `13-2.2.0`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-220---2022-11-02


3.15 (2022-10-17)
~~~~~~~~~~~~~~~~~

- Produce Python 3.11 wheels (`PR #108`__), thanks to ``cibuildwheel`` 2.11.1__ and to Bastien
  Gandouet

  __ https://github.com/lelit/pglast/pull/108
  __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v2111


3.14 (2022-08-08)
~~~~~~~~~~~~~~~~~

- Harden the way ``Visitor`` handle modifications to the AST (`issue #107`__)

  __ https://github.com/lelit/pglast/issues/107


3.13 (2022-06-29)
~~~~~~~~~~~~~~~~~

- Update libpg_query to `13-2.1.2`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-212---2022-06-28


3.12 (2022-06-19)
~~~~~~~~~~~~~~~~~

- Rewrite the implementation of the ``referenced_relations()`` function, that was flawed with
  regard to CTEs handling (`issue #106`__), thanks to Michal Charemza for providing his own
  version

  __ https://github.com/lelit/pglast/issues/106

- Improve ``WithClause`` printer indentation

- Fix minor whitespace related issues in a few printer functions


3.11 (2022-05-29)
~~~~~~~~~~~~~~~~~

- Fix the ``Visitor`` class, it was ignoring nodes nested in sub-lists

- Reduce the size of the generated parser by factoring out common code into helper functions


3.10 (2022-05-11)
~~~~~~~~~~~~~~~~~

- Update libpg_query to `13-2.1.1`__ (`PR #102`__), thanks to James Guthrie

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-211---2022-05-03
  __ https://github.com/lelit/pglast/pull/102

- Produce `musllinux`__ wheels, thanks to ``cibuildwheel`` `2.5.0`__ (:PEP:`656` was actually
  introduced in `2.2.0`__)

  __ https://peps.python.org/pep-0656/
  __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v250
  __ https://cibuildwheel.readthedocs.io/en/stable/changelog/#v220


3.9 (2022-02-24)
~~~~~~~~~~~~~~~~

- Fix bug handling node containing a ``location`` field, e.g. ``CreateTableSpaceStmt`` (`issue
  #98`__)

  __ https://github.com/lelit/pglast/issues/98

- Properly handle dereferenced array expression (`issue #99`__)

  __ https://github.com/lelit/pglast/issues/99

- Avoid improper "floatification" of literal integers (`issue #100`__)

  __ https://github.com/lelit/pglast/issues/100


3.8 (2021-12-28)
~~~~~~~~~~~~~~~~

- Fix glitch in the AST extractor tool (`issue #97`__)

  __ https://github.com/lelit/pglast/issues/97

- Add Linux AArch64 wheel build support (`PR #95`__), thanks to odidev

  __ https://github.com/lelit/pglast/pull/95

- Fix type mismatch when using ``--remove-pg_catalog-from-functions`` (`PR #93`__), thanks
  to Boris Zentner

  __ https://github.com/lelit/pglast/pull/93/


3.7 (2021-10-13)
~~~~~~~~~~~~~~~~

- Update libpg_query to `13-2.1.0`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-210---2021-10-12_


3.6 (2021-10-09)
~~~~~~~~~~~~~~~~

- Use latest libpg_query, to fix an error parsing ``PLpgSQL`` statements (`issue #88`__)

  __ https://github.com/lelit/pglast/issues/88


3.5 (2021-09-26)
~~~~~~~~~~~~~~~~

- Forward the ``special_functions`` option to substream, when concatenating items
  (`issue #89`__)

  __ https://github.com/lelit/pglast/issues/89

- Fix representation of floating point numbers without decimal digits (`issue #91`__)

  __ https://github.com/lelit/pglast/issues/91

- Produce Python 3.10 wheels, thanks to ``cibuildwheel`` 2.1.2

- Update libpg_query to `13-2.0.7`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-207---2021-07-16_

- New option ``--remove-pg_catalog-from-functions`` on the command line tool (`PR #90`__), thanks
  to Boris Zentner

  __ https://github.com/lelit/pglast/pull/90/

- Implement more *special functions* (`PR #92`__), thanks to Boris Zentner

  __ https://github.com/lelit/pglast/pull/92/


3.4 (2021-08-21)
~~~~~~~~~~~~~~~~

- Fix another packaging issue, that prevented recompilation from the sdist ``.tar.gz`` (`issue
  #86`__), thanks to Christopher Brichford

  __ https://github.com/lelit/pglast/issues/82


3.3 (2021-07-04)
~~~~~~~~~~~~~~~~

- Update libpg_query to `13-2.0.6`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-206---2021-06-29_


3.2 (2021-06-25)
~~~~~~~~~~~~~~~~

- Effectively include libpg_query's vendored sources (`issue #82`__)

  __ https://github.com/lelit/pglast/issues/82


3.1 (2021-06-25)
~~~~~~~~~~~~~~~~

- Fix packaging glitch (`issue #82`__)

  __ https://github.com/lelit/pglast/issues/82

- Build wheels also for macOS

- Update libpg_query to `13-2.0.5`__

  __ https://github.com/pganalyze/libpg_query/blob/13-latest/CHANGELOG.md#13-205---2021-06-24_


3.0 (2021-06-04)
~~~~~~~~~~~~~~~~

- Fix glitch in the ``RawStream``, avoiding spurious space after an open parenthesis

- Improve the ``Visitor`` class, to make it easier altering the original tree

- Properly handle nested lists in the serialization of AST Node


3.0.dev2 (2021-05-22)
**Breaking changes**
  • To reduce confusion, the printer module has been removed: print-specific stuff is now directly exposed by the printers subpackage while serialization classes are now in the new stream module

  • The default value for the safety_belt option of the printify() function is now False

3.0.dev1 (2021-05-16)


- Fix ``AT_SetIdentity``, ``AT_EnableReplicaTrig`` and ``AlterSubscriptionStmt`` printers

- Improve ``AlterTSConfigType`` and ``IntoClause`` printers

- New generic "visitor pattern" (`issue #51`__) exemplified by a new
  ``referenced_relations()`` function (`issue #66`__)

  __ https://github.com/lelit/pglast/issues/51
  __ https://github.com/lelit/pglast/issues/66

- Refine printing of SQL comments

- Implement ``AlterExtensionStmt`` printer


3.0.dev0 (2021-05-03)
**Breaking changes**
  • Target PostgreSQL 13

  • The pglast.parser module exposes all libpg_query entry points, even the new pg_query_deparse_protobuf() function that is basically equivalent to RawStream\ -based printer

  • The split() function is now based on the lower level pg_query_split_with_xxx() functions

  • The parse_sql() function returns native Python objects, not a JSON string as before: all PG nodes are now represented by subclasses of pglast.ast.Node, without exception, even Expr and Value are there. The latter impacts on pglast.node.Scalar: for example it now may contains a ast.Integer instance instead of a Python int

  • The pgpp --parse-tree output is a pprint__ represention of the AST, not a JSON string as before

    __ https://docs.python.org/3.9/library/pprint.html#pprint.pprint

  • The ParseError exception does not expose the location as an instance member anymore, although its still there, as the second argument (ie .args[1]); furthermore, its value now corresponds to the index in the original Unicode string, instead of the offset in the UTF-8 representation passed to the underlying C function

Version 2 #########

2.0.dev3 (2021-02-20)


- Handle ``INCLUDE`` clause in ``IndexStmt`` (`PR #67`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/67


2.0.dev2 (2020-10-24)
  • Merge new fingerprint functionality from v1 (i.e. master) branch

2.0.dev1 (2020-09-26)


- Require Python 3.6 or greater

- Handle ``ALTER TYPE .. RENAME VALUE`` in ``AlterEnumStmt`` (`PR #52`__), thanks to Ronan
  Dunklau

  __ https://github.com/lelit/pglast/pull/52

- Add support for Create / Alter / Drop PROCEDURE (`PR #48`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/48

- Use Ronan's fork__ of libpg_query, targeting PostgreSQL 12.1 (`PR #36`__)

  __ https://github.com/rdunklau/libpg_query
  __ https://github.com/lelit/pglast/pull/36

- Change get_postgresql_version() to return a ``(major, minor)`` tuple (`issue #38`__)

  __ https://github.com/lelit/pglast/issues/38

- Handle ``ALTER TABLE ... ALTER COLUMN ... SET STORAGE ...``

- Handle PG12 materialized CTEs (`issue #57`)

- Support column numbers in ``ALTER INDEX`` (`PR #58`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/58

- Handle ``SET LOGGED`` and ``SET UNLOGGED`` in ``ALTER TABLE`` (`PR #59`__), thanks to Ronan
  Dunklau

  __ https://github.com/lelit/pglast/pull/59

- Handle ``ALTER TYPE ... RENAME`` (`PR #62`__), , thanks to Ronan
  Dunklau

  __ https://github.com/lelit/pglast/pull/62


Version 1
#########

1.18 (2021-06-01)
~~~~~~~~~~~~~~~~~

- Fix exclusion constraint printer (`issue #81`__)

  __ https://github.com/lelit/pglast/issues/81


1.17 (2021-02-20)
~~~~~~~~~~~~~~~~~

- Fix the generic case in the ``RenameStmt`` printer


1.16 (2021-02-20)
~~~~~~~~~~~~~~~~~

- Promote to the *stable* state

- Move the job of building and uploading binary wheels from TravisCI to GitHub Actions


1.15 (2021-02-19)
~~~~~~~~~~~~~~~~~

- Fix ``IF EXISTS`` variant of ``RenameStmt`` printer (`PR #70`__), thanks to Jonathan
  Mortensen

  __ https://github.com/lelit/pglast/pull/70

- Update libpg_query to 10-1.0.5


1.14 (2020-10-24)
~~~~~~~~~~~~~~~~~

- Produce Python 3.9 wheels, thanks to ``cibuildwheel`` 1.6.3

- Expose the ``libpg_query``'s `fingerprint`__ functionality (`PR #64`__), thanks to Yiming
  Wang

  __ https://github.com/lfittl/libpg_query/wiki/Fingerprinting
  __ https://github.com/lelit/pglast/pull/64


1.13 (2020-09-26)
~~~~~~~~~~~~~~~~~

- Handle ``SELECT FROM foo``


1.12 (2020-06-08)
~~~~~~~~~~~~~~~~~

- Double quote column names in the ``TYPE_FUNC_NAME_KEYWORDS`` set (`issue #55`__)

  __ https://github.com/lelit/pglast/issues/55

- Possibly wrap ``SELECT`` in ``UNION``/``INTERSECT`` between parens, when needed
  (`issue #55`__)

  __ https://github.com/lelit/pglast/issues/55


1.11 (2020-05-08)
~~~~~~~~~~~~~~~~~

- Fix ``A_Expr`` printer, when ``lexpr`` is missing (`PR #54`__), thanks to Aiham

  __ https://github.com/lelit/pglast/pull/54

- Support ``DISABLE ROW LEVEL SECURITY`` in ``AlterTableCmd`` (`PR #49`__), thanks to Ronan
  Dunklau

  __ https://github.com/lelit/pglast/pull/49

- Implement ``CreateOpClassStmt`` printer (`PR #47`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/47


1.10 (2020-01-25)
~~~~~~~~~~~~~~~~~

- Fix collation name printer (`PR #44`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/44

- Implement ``CreatePLangStmt`` printer (`PR #42`__), thanks to Bennie Swart

  __ https://github.com/lelit/pglast/pull/42

- Fix privileges printer (`PR #41`__), thanks to Bennie Swart

  __ https://github.com/lelit/pglast/pull/41

- Handle ``TRUNCATE`` event in ``CreateTrigStmt`` printer (`PR #40`__), thanks to Bennie Swart

  __ https://github.com/lelit/pglast/pull/40

- Fix function body dollar quoting (`PR #39`__), thanks to Bennie Swart

  __ https://github.com/lelit/pglast/pull/39


1.9 (2019-12-20)
~~~~~~~~~~~~~~~~

- Prettier ``INSERT`` representation


1.8 (2019-12-07)
~~~~~~~~~~~~~~~~

- Prettier ``CASE`` representation

- New option to emit a semicolon after the last statement (`issue #24`__)

  __ https://github.com/lelit/pglast/issues/24


1.7 (2019-12-01)
~~~~~~~~~~~~~~~~

- Implement ``NotifyStmt`` printer

- Implement ``RuleStmt`` printer, thanks to Gavin M. Roy for his `PR #28`__

  __ https://github.com/lelit/pglast/pull/28

- Fix ``RenameStmt``, properly handling object name

- Produce Python 3.8 wheels, thanks to `cibuildwheel`__ 1.0.0

  __ https://github.com/joerick/cibuildwheel

- Support ``ALTER TABLE RENAME CONSTRAINT`` (`PR #35`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/35


1.6 (2019-09-04)
~~~~~~~~~~~~~~~~

- Fix issue with boolean expressions precedence (`issue #29`__)

  __ https://github.com/lelit/pglast/issues/29

- Implement ``BitString`` printer

- Support ``LEAKPROOF`` option (`PR #31`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/31

- Support ``DEFERRABLE INITIALLY DEFERRED`` option (`PR #32`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/32


1.5 (2019-06-04)
~~~~~~~~~~~~~~~~

- Fix issue with ``RETURNS SETOF`` functions, a more general solution than the one proposed by
  Ronan Dunklau (`PR #22`__)

  __ https://github.com/lelit/pglast/pull/22

- Allow more than one empty line between statements (`PR #26`__), thanks to apnewberry

  __ https://github.com/lelit/pglast/pull/26


1.4 (2019-04-06)
~~~~~~~~~~~~~~~~

- Fix wrap of trigger's WHEN expression (`issue #18`__)

  __ https://github.com/lelit/pglast/issues/18

- Support for variadic functions (`PR #19`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/19

- Support ORDER / LIMIT / OFFSET for set operations (`PR #20`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/20

- Implement ``ConstraintsSetStmt`` and improve ``VariableSetStmt`` printers


1.3 (2019-03-28)
~~~~~~~~~~~~~~~~

- Support ``CROSS JOIN`` and timezone modifiers on time and timestamp datatypes (`PR #15`__),
  thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/15

- Many new printers and several enhancements (`PR #14`__), thanks to Ronan Dunklau

  __ https://github.com/lelit/pglast/pull/14

- Expose the package version as pglast.__version__ (`issue #12`__)

  __ https://github.com/lelit/pglast/issues/12


1.2 (2019-02-13)
~~~~~~~~~~~~~~~~

- Implement new `split()` function (see `PR #10`__)

  __ https://github.com/lelit/pglast/pull/10

- Implement ``BooleanTest`` printer (`issue #11`__)

  __ https://github.com/lelit/pglast/issues/11


1.1 (2018-07-20)
~~~~~~~~~~~~~~~~

- No visible changes, but now PyPI carries binary wheels for Python 3.7.


1.0 (2018-06-16)
~~~~~~~~~~~~~~~~

.. important:: The name of the package has been changed from ``pg_query`` to ``pglast``, to
               satisfy the request made by the author of ``libpg_query`` in `issue #9`__.

               This affects both the main repository on GitHub, that from now on is
               ``https://github.com/lelit/pglast``, and the ReadTheDocs project that hosts the
               documentation, ``http://pglast.readthedocs.io/en/latest/``.

               I'm sorry for any inconvenience this may cause.

__ https://github.com/lelit/pglast/issues/9


0.28 (2018-06-06)
~~~~~~~~~~~~~~~~~

- Update libpg_query to 10-1.0.2

- Support the '?'-style parameter placeholder variant allowed by libpg_query (details__)

__ https://github.com/lfittl/libpg_query/issues/45


0.27 (2018-04-15)
~~~~~~~~~~~~~~~~~

- Prettier JOINs representation, aligning them with the starting relation


0.26 (2018-04-03)
~~~~~~~~~~~~~~~~~

- Fix cosmetic issue with ANY() and ALL()


0.25 (2018-03-31)
~~~~~~~~~~~~~~~~~

- Fix issue in the safety belt check performed by ``pgpp`` (`issue #4`__)

__ https://github.com/lelit/pglast/issues/4


0.24 (2018-03-02)
~~~~~~~~~~~~~~~~~

- Implement ``Null`` printer


0.23 (2017-12-28)
~~~~~~~~~~~~~~~~~

- Implement some other DDL statements printers

- New alternative style to print *comma-separated-values* lists, activated by a new
  ``--comma-at-eoln`` option on ``pgpp``


0.22 (2017-12-03)
~~~~~~~~~~~~~~~~~

- Implement ``TransactionStmt`` and almost all ``DROP xxx`` printers


0.21 (2017-11-22)
~~~~~~~~~~~~~~~~~

- Implement ``NamedArgExpr`` printer

- New alternative printers for a set of *special functions*, activated by a new
  ``--special-functions`` option on ``pgpp`` (`issue #2`__)

__ https://github.com/lelit/pglast/issues/2


0.20 (2017-11-21)
~~~~~~~~~~~~~~~~~

- Handle special de-reference (``A_Indirection``) cases


0.19 (2017-11-16)
~~~~~~~~~~~~~~~~~

- Fix serialization of column labels containing double quotes

- Fix corner issues surfaced implementing some more DDL statement printers


0.18 (2017-11-14)
~~~~~~~~~~~~~~~~~

- Fix endless loop due to sloppy conversion of command line option

- Install the command line tool as ``pgpp``


0.17 (2017-11-12)
~~~~~~~~~~~~~~~~~

- Rename printers.sql to printers.dml (**backward incompatibility**)

- List printer functions in the documentation, referencing the definition of related node type

- Fix inconsistent spacing in JOIN condition inside a nested expression

- Fix representation of unbound arrays

- Fix representation of ``interval`` data type

- Initial support for DDL statements

- Fix representation of string literals containing single quotes


0.16 (2017-10-31)
~~~~~~~~~~~~~~~~~

- Update libpg_query to 10-1.0.0


0.15 (2017-10-12)
~~~~~~~~~~~~~~~~~

- Fix indentation of boolean expressions in SELECT's targets (`issue #3`__)

__ https://github.com/lelit/pglast/issues/3


0.14 (2017-10-09)
~~~~~~~~~~~~~~~~~

- Update to latest libpg_query's 10-latest branch, targeting PostgreSQL 10.0 final


0.13 (2017-09-17)
~~~~~~~~~~~~~~~~~

- Fix representation of subselects requiring surrounding parens


0.12 (2017-08-22)
~~~~~~~~~~~~~~~~~

- New option ``--version`` on the command line tool

- Better enums documentation

- Release the GIL while calling libpg_query functions


0.11 (2017-08-11)
~~~~~~~~~~~~~~~~~

- Nicer indentation for JOINs, making OUTER JOINs stand out

- Minor tweaks to lists rendering, with less spurious whitespaces

- New option ``--no-location`` on the command line tool


0.10 (2017-08-11)
~~~~~~~~~~~~~~~~~

- Support Python 3.4 and Python 3.5 as well as Python 3.6


0.9 (2017-08-10)
~~~~~~~~~~~~~~~~

- Fix spacing before the $ character

- Handle type modifiers

- New option ``--plpgsql`` on the command line tool, just for fun


0.8 (2017-08-10)
~~~~~~~~~~~~~~~~

- Add enums subpackages to the documentation with references to their related headers

- New ``compact_lists_margin`` option to produce a more compact representation when possible
  (see `issue #1`__)

__ https://github.com/lelit/pglast/issues/1


0.7 (2017-08-10)
~~~~~~~~~~~~~~~~

- Fix sdist including the Sphinx documentation


0.6 (2017-08-10)
~~~~~~~~~~~~~~~~

- New option ``--parse-tree`` on the command line tool to show just the parse tree

- Sphinx documentation, available online


0.5 (2017-08-09)
~~~~~~~~~~~~~~~~

- Handle some more cases when a name must be double-quoted

- Complete the serialization of the WindowDef node, handling its frame options


0.4 (2017-08-09)
~~~~~~~~~~~~~~~~

- Expose the actual PostgreSQL version the underlying libpg_query libray is built on thru a new
  ``get_postgresql_version()`` function

- New option `safety_belt` for the ``prettify()`` function, to protect the innocents

- Handle serialization of ``CoalesceExpr`` and ``MinMaxExpr``


0.3 (2017-08-07)
~~~~~~~~~~~~~~~~

- Handle serialization of ``ParamRef`` nodes

- Expose a ``prettify()`` helper function


0.2 (2017-08-07)
~~~~~~~~~~~~~~~~

- Test coverage at 99%

- First attempt at automatic wheel upload to PyPI, let's see...


0.1 (2017-08-07)
~~~~~~~~~~~~~~~~

- First release ("Hi daddy!", as my soul would tag it)

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc