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.