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
longvariable: 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
Protobufbuffer- Returns
str
Return the
SQLstatement 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
SQLstatement(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
SQLstatement(s), and return the corresponding parse tree as a tuple ofpglast.ast.RawStmtinstances.
- pglast.parser.parse_sql_json(query)¶
- Parameters
query (str) – The SQL statement
- Returns
str
Parse the given query, a string with the
SQLstatement(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
SQLstatement(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
plpgsqlstatement(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
SQLstatements.By default this uses the parser to perform the job; when with_parser is
Falsethe scanner variant is used, indicated when the statements may contain parse errors.When only_slices is
True, return a sequence ofsliceinstances, one for each statement, instead of statements text.Note
Leading and trailing whitespace are removed from the statements.