public class Parser extends Object
Constructor and Description |
---|
Parser() |
Modifier and Type | Method and Description |
---|---|
static boolean |
charTerminatesIdentifier(char c) |
static boolean |
isDollarQuoteContChar(char c)
Checks if a character is valid as the second or later character of a dollar quoting tag.
|
static boolean |
isDollarQuoteStartChar(char c)
Checks if a character is valid as the start of a dollar quoting tag.
|
static boolean |
isIdentifierContChar(char c)
Checks if a character is valid as the second or later character of an identifier.
|
static boolean |
isIdentifierStartChar(char c)
Checks if a character is valid as the start of an identifier.
|
static boolean |
isOperatorChar(char c) |
static boolean |
isSpace(char c) |
static JdbcCallParseInfo |
modifyJdbcCall(String jdbcSql,
boolean stdStrings,
int serverVersion,
int protocolVersion)
Converts JDBC-specific callable statement escapes {@code { [?
|
static int |
parseBlockComment(char[] query,
int offset)
Test if the / character at offset starts a block comment, and return the
position of the last / character.
|
static boolean |
parseDeleteKeyword(char[] query,
int offset)
Parse string to check presence of DELETE keyword regardless of case.
|
static int |
parseDollarQuotes(char[] query,
int offset)
Test if the dollar character ($) at the given offset starts a dollar-quoted string and
return the offset of the ending dollar character.
|
static int |
parseDoubleQuotes(char[] query,
int offset)
Find the end of the double-quoted string starting at the given offset.
|
static boolean |
parseInsertKeyword(char[] query,
int offset)
Parse string to check presence of INSERT keyword regardless of case.
|
static List<NativeQuery> |
parseJdbcSql(String query,
boolean standardConformingStrings,
boolean withParameters,
boolean splitStatements,
boolean isBatchedReWriteConfigured,
String... returningColumnNames)
Parses JDBC query into PostgreSQL's native format.
|
static int |
parseLineComment(char[] query,
int offset)
Test if the - character at offset starts a -- style line comment,
and return the position of the first \r or \n character.
|
static boolean |
parseMoveKeyword(char[] query,
int offset)
Parse string to check presence of MOVE keyword regardless of case.
|
static boolean |
parseReturningKeyword(char[] query,
int offset)
Parse string to check presence of RETURNING keyword regardless of case.
|
static boolean |
parseSelectKeyword(char[] query,
int offset)
Parse string to check presence of SELECT keyword regardless of case.
|
static int |
parseSingleQuotes(char[] query,
int offset,
boolean standardConformingStrings)
Find the end of the single-quoted string starting at the given offset.
|
static boolean |
parseUpdateKeyword(char[] query,
int offset)
Parse string to check presence of UPDATE keyword regardless of case.
|
static boolean |
parseValuesKeyword(char[] query,
int offset)
Parse string to check presence of VALUES keyword regardless of case.
|
static boolean |
parseWithKeyword(char[] query,
int offset)
Parse string to check presence of WITH keyword regardless of case.
|
static String |
replaceProcessing(String p_sql,
boolean replaceProcessingEnabled,
boolean standardConformingStrings)
Filter the SQL string of Java SQL Escape clauses.
|
public static List<NativeQuery> parseJdbcSql(String query, boolean standardConformingStrings, boolean withParameters, boolean splitStatements, boolean isBatchedReWriteConfigured, String... returningColumnNames) throws SQLException
query
- jdbc query to parsestandardConformingStrings
- whether to allow backslashes to be used as escape characters
in single quote literalswithParameters
- whether to replace ?, ? with $1, $2, etcsplitStatements
- whether to split statements by semicolonisBatchedReWriteConfigured
- whether re-write optimization is enabledreturningColumnNames
- for simple insert, update, delete add returning with given column namesSQLException
- if unable to add returning clause (invalid column names)public static int parseSingleQuotes(char[] query, int offset, boolean standardConformingStrings)
query
- queryoffset
- start offsetstandardConformingStrings
- standard conforming stringspublic static int parseDoubleQuotes(char[] query, int offset)
query
- queryoffset
- start offsetpublic static int parseDollarQuotes(char[] query, int offset)
query
- queryoffset
- start offsetpublic static int parseLineComment(char[] query, int offset)
query
- queryoffset
- start offsetpublic static int parseBlockComment(char[] query, int offset)
query
- queryoffset
- start offsetpublic static boolean parseDeleteKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseInsertKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseMoveKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseReturningKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseSelectKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseUpdateKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseValuesKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean parseWithKeyword(char[] query, int offset)
query
- char[] of the query statementoffset
- position of query to start checkingpublic static boolean isSpace(char c)
c
- characterpublic static boolean isOperatorChar(char c)
c
- characterpublic static boolean isIdentifierStartChar(char c)
c
- the character to checkpublic static boolean isIdentifierContChar(char c)
c
- the character to checkpublic static boolean charTerminatesIdentifier(char c)
c
- characterpublic static boolean isDollarQuoteStartChar(char c)
c
- the character to checkpublic static boolean isDollarQuoteContChar(char c)
c
- the character to checkpublic static JdbcCallParseInfo modifyJdbcCall(String jdbcSql, boolean stdStrings, int serverVersion, int protocolVersion) throws SQLException
{ [? =] call <some_function> [(?,
[?,..])] }
into the PostgreSQL format which is select <some_function> (?, [?, ...]) as
result
or select * from <some_function> (?, [?, ...]) as result
(7.3)jdbcSql
- sql text with JDBC escapesstdStrings
- if backslash in single quotes should be regular character or escape oneserverVersion
- server versionprotocolVersion
- protocol versionSQLException
- if given SQL is malformedpublic static String replaceProcessing(String p_sql, boolean replaceProcessingEnabled, boolean standardConformingStrings) throws SQLException
Currently implemented Escape clauses are those mentioned in 11.3 in the specification. Basically we look through the sql string for {d xxx}, {t xxx}, {ts xxx}, {oj xxx} or {fn xxx} in non-string sql code. When we find them, we just strip the escape part leaving only the xxx part. So, something like "select * from x where d={d '2001-10-09'}" would return "select * from x where d= '2001-10-09'".
p_sql
- the original query textreplaceProcessingEnabled
- whether replace_processing_enabled is onstandardConformingStrings
- whether standard_conforming_strings is onSQLException
- if given SQL is wrongCopyright © 2017 PostgreSQL Global Development Group. All rights reserved.