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 ProtobufbufferReturns: 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:
- start : int
- the index of the start of the token
- end : int
- the index of the end of the token
- name : str
- the name of the offset
- keyword : str
- 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.