summaryrefslogtreecommitdiff
path: root/sqlparse
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2019-05-16 07:56:57 +0200
committerAndi Albrecht <albrecht.andi@gmail.com>2019-05-16 07:56:57 +0200
commit7168e5ce67119d0c171be7dac36bd7d21f762589 (patch)
tree2d96e5d6e7118c0c66099d2c2b61b2574d56702f /sqlparse
parent93262c895b955ff50a1bc13536de3024d3eede50 (diff)
downloadsqlparse-7168e5ce67119d0c171be7dac36bd7d21f762589.tar.gz
Add support for time zone casts (fixes #489).
Diffstat (limited to 'sqlparse')
-rw-r--r--sqlparse/engine/grouping.py14
-rw-r--r--sqlparse/keywords.py2
2 files changed, 15 insertions, 1 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py
index afc9123..ab97ec6 100644
--- a/sqlparse/engine/grouping.py
+++ b/sqlparse/engine/grouping.py
@@ -88,6 +88,19 @@ def group_typecasts(tlist):
_group(tlist, sql.Identifier, match, valid_prev, valid_next, post)
+def group_tzcasts(tlist):
+ def match(token):
+ return token.ttype == T.Keyword.TZCast
+
+ def valid(token):
+ return token is not None
+
+ def post(tlist, pidx, tidx, nidx):
+ return pidx, nidx
+
+ _group(tlist, sql.Identifier, match, valid, valid, post)
+
+
def group_period(tlist):
def match(token):
return token.match(T.Punctuation, '.')
@@ -358,6 +371,7 @@ def group(stmt):
group_identifier,
group_order,
group_typecasts,
+ group_tzcasts,
group_operator,
group_comparison,
group_as,
diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py
index d929cbf..2444b22 100644
--- a/sqlparse/keywords.py
+++ b/sqlparse/keywords.py
@@ -85,7 +85,7 @@ SQL_REGEX = {
(r'GROUP\s+BY\b', tokens.Keyword),
(r'ORDER\s+BY\b', tokens.Keyword),
(r'(LATERAL\s+VIEW\s+)(EXPLODE|INLINE|PARSE_URL_TUPLE|POSEXPLODE|STACK)\b', tokens.Keyword),
-
+ (r"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'", tokens.Keyword.TZCast),
(r'[0-9_A-ZÀ-Ü][_$#\w]*', is_keyword),
(r'[;:()\[\],\.]', tokens.Punctuation),