Changes¶
Version 3¶
3.18 (2023-08-24)¶
Fix
BooleanTest
printer, enclosing expression within parens in more cases (issue #129)Fix
Constraint
printer, avoiding repetition of “DEFERRABLE INITIALLY DEFERRED” on some kind of constraints (issue #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
3.15 (2022-10-17)¶
3.14 (2022-08-08)¶
Harden the way
Visitor
handle modifications to the AST (issue #107)
3.13 (2022-06-29)¶
Update libpg_query to 13-2.1.2
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 versionImprove
WithClause
printer indentationFix 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-listsReduce the size of the generated parser by factoring out common code into helper functions
3.10 (2022-05-11)¶
3.9 (2022-02-24)¶
Fix bug handling node containing a
location
field, e.g.CreateTableSpaceStmt
(issue #98)Properly handle dereferenced array expression (issue #99)
Avoid improper “floatification” of literal integers (issue #100)
3.8 (2021-12-28)¶
3.7 (2021-10-13)¶
Update libpg_query to 13-2.1.0
3.6 (2021-10-09)¶
Use latest libpg_query, to fix an error parsing
PLpgSQL
statements (issue #88)
3.5 (2021-09-26)¶
Forward the
special_functions
option to substream, when concatenating items (issue #89)Fix representation of floating point numbers without decimal digits (issue #91)
Produce Python 3.10 wheels, thanks to
cibuildwheel
2.1.2Update libpg_query to 13-2.0.7
New option
--remove-pg_catalog-from-functions
on the command line tool (PR #90), thanks to Boris ZentnerImplement more special functions (PR #92), thanks to Boris Zentner
3.4 (2021-08-21)¶
Fix another packaging issue, that prevented recompilation from the sdist
.tar.gz
(issue #86), thanks to Christopher Brichford
3.3 (2021-07-04)¶
Update libpg_query to 13-2.0.6
3.2 (2021-06-25)¶
Effectively include libpg_query’s vendored sources (issue #82)
3.1 (2021-06-25)¶
3.0 (2021-06-04)¶
Fix glitch in the
RawStream
, avoiding spurious space after an open parenthesisImprove the
Visitor
class, to make it easier altering the original treeProperly handle nested lists in the serialization of AST Node
3.0.dev2 (2021-05-22)¶
Fix bug in
CreateStmt
printer (issue #79)Make it possible to pass also concrete
ast.Node
s toRawStream`
Breaking changes¶
To reduce confusion, the
printer
module has been removed: print-specific stuff is now directly exposed by theprinters
subpackage while serialization classes are now in the newstream
moduleThe default value for the
safety_belt
option of theprintify()
function is nowFalse
3.0.dev1 (2021-05-16)¶
Fix
AT_SetIdentity
,AT_EnableReplicaTrig
andAlterSubscriptionStmt
printersImprove
AlterTSConfigType
andIntoClause
printersNew generic “visitor pattern” (issue #51) exemplified by a new
referenced_relations()
function (issue #66)Refine printing of SQL comments
Implement
AlterExtensionStmt
printer
3.0.dev0 (2021-05-03)¶
Expose the new
pg_query_scan()
function asparser.scan()
Expose the
pg_query_parse()
function asparser.parse_sql_json()
Expose the new
pg_query_parse_protobuf()
function asparser.parse_sql_protobuf()
Expose the new
pg_query_deparse_protobuf()
function asparser.deparse_protobuf()
Honor the
catalogname
of aRangeVar
if present (issue #71)Cover almost all
SQL
statements, testing against the wholePostgreSQL
regression suite (issue #68, PR #72 and PR #77), thanks to Ronan Dunklau and Hong ChengNew rudimentary support for the preserve comments feature (issue #23)
Breaking changes¶
Target PostgreSQL 13
The
pglast.parser
module exposes alllibpg_query
entry points, even the newpg_query_deparse_protobuf()
function that is basically equivalent toRawStream
-based printerThe
split()
function is now based on the lower levelpg_query_split_with_xxx()
functionsThe
parse_sql()
function returns native Python objects, not aJSON
string as before: all PG nodes are now represented by subclasses ofpglast.ast.Node
, without exception, evenExpr
andValue
are there. The latter impacts onpglast.node.Scalar
: for example it now may contains aast.Integer
instance instead of a Pythonint
The
pgpp --parse-tree
output is a pprint represention of theAST
, not aJSON
string as beforeThe
ParseError
exception does not expose thelocation
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 theUTF-8
representation passed to the underlying C function
Version 2¶
2.0.dev3 (2021-02-20)¶
Handle
INCLUDE
clause inIndexStmt
(PR #67), thanks to Ronan Dunklau
2.0.dev2 (2020-10-24)¶
Merge new
fingerprint
functionality fromv1
(i.e.master
) branch
2.0.dev1 (2020-09-26)¶
Require Python 3.6 or greater
Handle
ALTER TYPE .. RENAME VALUE
inAlterEnumStmt
(PR #52), thanks to Ronan DunklauAdd support for Create / Alter / Drop PROCEDURE (PR #48), thanks to Ronan Dunklau
Use Ronan’s fork of libpg_query, targeting PostgreSQL 12.1 (PR #36)
Change get_postgresql_version() to return a
(major, minor)
tuple (issue #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 DunklauHandle
SET LOGGED
andSET UNLOGGED
inALTER TABLE
(PR #59), thanks to Ronan DunklauHandle
ALTER TYPE ... RENAME
(PR #62), , thanks to Ronan Dunklau
Version 1¶
1.18 (2021-06-01)¶
Fix exclusion constraint printer (issue #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 ofRenameStmt
printer (PR #70), thanks to Jonathan MortensenUpdate libpg_query to 10-1.0.5
1.14 (2020-10-24)¶
Produce Python 3.9 wheels, thanks to
cibuildwheel
1.6.3Expose the
libpg_query
’s fingerprint functionality (PR #64), thanks to Yiming Wang
1.13 (2020-09-26)¶
Handle
SELECT FROM foo
1.12 (2020-06-08)¶
1.11 (2020-05-08)¶
1.10 (2020-01-25)¶
Fix collation name printer (PR #44), thanks to Ronan Dunklau
Implement
CreatePLangStmt
printer (PR #42), thanks to Bennie SwartFix privileges printer (PR #41), thanks to Bennie Swart
Handle
TRUNCATE
event inCreateTrigStmt
printer (PR #40), thanks to Bennie SwartFix function body dollar quoting (PR #39), thanks to Bennie Swart
1.9 (2019-12-20)¶
Prettier
INSERT
representation
1.8 (2019-12-07)¶
Prettier
CASE
representationNew option to emit a semicolon after the last statement (issue #24)
1.7 (2019-12-01)¶
Implement
NotifyStmt
printerImplement
RuleStmt
printer, thanks to Gavin M. Roy for his PR #28Fix
RenameStmt
, properly handling object nameProduce Python 3.8 wheels, thanks to cibuildwheel 1.0.0
Support
ALTER TABLE RENAME CONSTRAINT
(PR #35), thanks to Ronan Dunklau
1.6 (2019-09-04)¶
1.5 (2019-06-04)¶
1.4 (2019-04-06)¶
1.3 (2019-03-28)¶
1.2 (2019-02-13)¶
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.
0.28 (2018-06-06)¶
Update libpg_query to 10-1.0.2
Support the ‘?’-style parameter placeholder variant allowed by libpg_query (details)
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)
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 onpgpp
0.22 (2017-12-03)¶
Implement
TransactionStmt
and almost allDROP xxx
printers
0.21 (2017-11-22)¶
Implement
NamedArgExpr
printerNew alternative printers for a set of special functions, activated by a new
--special-functions
option onpgpp
(issue #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 typeInitial 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)
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 toolBetter 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)
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 treeSphinx 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()
functionNew option safety_belt for the
prettify()
function, to protect the innocentsHandle serialization of
CoalesceExpr
andMinMaxExpr
0.3 (2017-08-07)¶
Handle serialization of
ParamRef
nodesExpose 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)