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’sFetchStmt.howMany
, that uses the constantFETCH_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 byparse_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 ofpglast.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 thelibpg_query
‘sJSON
-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 thelibpg_query
‘sProtobuf
-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 thelibpg_query
‘sJSON
-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 ofslice
instances, one for each statement, instead of statements text.Note
Leading and trailing whitespace are removed from the statements.