diff options
| author | Fredy Wijaya <fredy.wijaya@gmail.com> | 2018-03-21 23:01:17 -0500 |
|---|---|---|
| committer | Fredy Wijaya <fredy.wijaya@gmail.com> | 2018-03-21 23:04:40 -0500 |
| commit | e07e09540d056f2fad0f18acfb8196b42c2ace66 (patch) | |
| tree | bcfb2bf693bb380c81071f0b02cc874a5f2ff6a0 | |
| parent | 19b9e6756c796752565950d89598ef8b46ca786d (diff) | |
| download | sqlparse-e07e09540d056f2fad0f18acfb8196b42c2ace66.tar.gz | |
Fix issue with get_real_name returning incorrect name
| -rw-r--r-- | sqlparse/sql.py | 7 | ||||
| -rw-r--r-- | tests/test_parse.py | 9 |
2 files changed, 13 insertions, 3 deletions
diff --git a/sqlparse/sql.py b/sqlparse/sql.py index 99f133e..4b78a92 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -358,7 +358,7 @@ class TokenList(Token): """Returns the real name (object name) of this identifier.""" # a.b dot_idx, _ = self.token_next_by(m=(T.Punctuation, '.')) - return self._get_first_name(dot_idx) + return self._get_first_name(dot_idx, real_name=True) def get_parent_name(self): """Return name of the parent object if any. @@ -369,7 +369,8 @@ class TokenList(Token): _, prev_ = self.token_prev(dot_idx) return remove_quotes(prev_.value) if prev_ is not None else None - def _get_first_name(self, idx=None, reverse=False, keywords=False): + def _get_first_name(self, idx=None, reverse=False, keywords=False, + real_name=False): """Returns the name of the first token with a name""" tokens = self.tokens[idx:] if idx else self.tokens @@ -383,7 +384,7 @@ class TokenList(Token): if token.ttype in types: return remove_quotes(token.value) elif isinstance(token, (Identifier, Function)): - return token.get_name() + return token.get_real_name() if real_name else token.get_name() class Statement(TokenList): diff --git a/tests/test_parse.py b/tests/test_parse.py index b6f4fff..30be32b 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -424,3 +424,12 @@ def test_non_ascii(): statement = stmts[0] assert text_type(statement) == _test_non_ascii assert statement._pprint_tree() is None + + +def test_get_real_name(): + # issue 369 + s = u"update a t set t.b=1" + stmts = sqlparse.parse(s) + assert len(stmts) == 1 + assert 'a' == stmts[0].get_real_name() + assert 't' == stmts[0].get_alias() |
