pglast.parser — The interface with libpg_query

This module is a C extension written in Cython that exposes a few functions from the underlying libpg_query library it links against.

pglast.parser.LONG_MAX

The highest integer that can be stored in a C long variable: it is used as a marker, for example in PG’s FetchStmt.howMany, that uses the constant FETCH_ALL.

exception pglast.parser.ParseError

Exception representing the error state returned by the parser.

exception pglast.parser.DeparseError

Exception representing the error state returned by the deparser.

pglast.parser.deparse_protobuf(buffer)
Parameters

buffer (bytes) – a Protobuf buffer

Returns

str

Return the SQL statement from the given buffer argument, something generated by parse_sql_protobuf().

pglast.parser.fingerprint(query)
Parameters

query (str) – The SQL statement

Returns

str

Fingerprint the given query, a string with the SQL statement(s), and return a hash digest that can identify similar queries. For similar queries that are different only because of the queried object or formatting, the returned digest will be the same.

pglast.parser.get_postgresql_version()
Returns

a tuple

Return the PostgreSQL version as a tuple (major, minor, patch).

pglast.parser.parse_sql(query)
Parameters

query (str) – The SQL statement

Returns

tuple

Parse the given query, a string with the SQL statement(s), and return the corresponding parse tree as a tuple of pglast.ast.RawStmt instances.

pglast.parser.parse_sql_json(query)
Parameters

query (str) – The SQL statement

Returns

str

Parse the given query, a string with the SQL statement(s), and return the libpg_query‘s JSON-serialized parse tree.

pglast.parser.parse_sql_protobuf(query)
Parameters

query (str) – The SQL statement

Returns

bytes

Parse the given query, a string with the SQL statement(s), and return the libpg_query‘s Protobuf-serialized parse tree.

pglast.parser.parse_plpgsql_json(query)
Parameters

query (str) – The PLpgSQL statement

Returns

str

Parse the given query, a string with the plpgsql statement(s), and return the libpg_query‘s JSON-serialized parse tree.

pglast.parser.scan(query)
Parameters

query (str) – The SQL statement

Returns

sequence of tuples

Split the given query into its tokens. Each token is a namedtuple with the following slots:

startint

the index of the start of the token

endint

the index of the end of the token

namestr

the name of the offset

keywordstr

the keyword kind

pglast.parser.split(query, with_parser=True, only_slices=False)
Parameters
  • query (str) – The SQL statement

  • with_parser (bool) – Whether to use the parser or the scanner

  • only_slices (bool) – Return slices instead of statement’s text

Returns

tuple

Split the given stmts string into a sequence of the single SQL statements.

By default this uses the parser to perform the job; when with_parser is False the scanner variant is used, indicated when the statements may contain parse errors.

When only_slices is True, return a sequence of slice instances, one for each statement, instead of statements text.

Note

Leading and trailing whitespace are removed from the statements.