IntroductionΒΆ
At the lower level the module exposes several libpg_query functions:
The first two take an SQL
statement and return the correspondent parse tree respectively
as a JSON
encoded value and a Protobuf
encoded value; the third function takes a
PLpgSQL
statement and returns the parse tree as JSON
, the fourth returns an hash of
the given statement that can be used to compare different SQL
s, the fifth returns a
sequence of tokens that compose a SQL
statement, the sixth returns a sequence of the
single statements and the last one accepts a Protobuf
-serialized statement and reproduce
the original SQL
statement.
One more function, pglast.parser.parse_sql()
, is similar to parse_sql_json()
but
instead of JSON
returns the syntax tree represented by a hierarchy of instances of the
classes implemented in the pglast.ast
module.
On top of that, the module implements two serializations, one that transforms a Node
into a
raw
textual representation and another that returns a
prettified <pglast.stream.IndentedStream
representation. The latter is exposed by the
pgpp
CLI tool, see the Command line section of the examples of usage.