summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2014-01-10 17:45:51 +0100
committerAndi Albrecht <albrecht.andi@gmail.com>2014-01-10 17:45:51 +0100
commit25dabec661637ca5cab1a9047a76bee05cfa653f (patch)
tree081a2419511b53ad15c0eeb41366bb85807123b6
parent524a1e59d1c700337bcbd9ac198db3680c7d5829 (diff)
downloadsqlparse-25dabec661637ca5cab1a9047a76bee05cfa653f.tar.gz
Improve parsing of string literals in columns.
-rw-r--r--CHANGES1
-rw-r--r--sqlparse/engine/grouping.py1
-rw-r--r--tests/test_grouping.py6
3 files changed, 8 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 2331373..640ed45 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ Development
Bug Fixes
* Fix incorrect parsing of string literals containing line breaks (issue118).
* Fix typo in keywords, add MERGE keywords (issue122, by Cristian Orellana).
+* Improve parsing of string literals in columns.
Enhancements
* Classify DML keywords (issue116, by Victor Hahn).
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py
index 29f7a37..44cc124 100644
--- a/sqlparse/engine/grouping.py
+++ b/sqlparse/engine/grouping.py
@@ -157,6 +157,7 @@ def group_identifier(tlist):
lambda y: (y.ttype in (T.String.Symbol,
T.Name,
T.Wildcard,
+ T.Literal.String.Single,
T.Literal.Number.Integer,
T.Literal.Number.Float)
or isinstance(y, (sql.Parenthesis, sql.Function)))))
diff --git a/tests/test_grouping.py b/tests/test_grouping.py
index 24b50dc..38c1f66 100644
--- a/tests/test_grouping.py
+++ b/tests/test_grouping.py
@@ -238,6 +238,12 @@ def test_identifier_with_op_trailing_ws():
assert p.tokens[1].ttype is T.Whitespace
+def test_identifier_with_string_literals():
+ p = sqlparse.parse('foo + \'bar\'')[0]
+ assert len(p.tokens) == 1
+ assert isinstance(p.tokens[0], sql.Identifier)
+
+
# This test seems to be wrong. It was introduced when fixing #53, but #111
# showed that this shouldn't be an identifier at all. I'm leaving this
# commented in the source for a while.