Skip to content

Commit 1df9178

Browse files
authored
Merge pull request andialbrecht#397 from fredyw/issue_369
Fix issue with get_real_name returning incorrect name
2 parents 19b9e67 + e07e095 commit 1df9178

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

sqlparse/sql.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ def get_real_name(self):
358358
"""Returns the real name (object name) of this identifier."""
359359
# a.b
360360
dot_idx, _ = self.token_next_by(m=(T.Punctuation, '.'))
361-
return self._get_first_name(dot_idx)
361+
return self._get_first_name(dot_idx, real_name=True)
362362

363363
def get_parent_name(self):
364364
"""Return name of the parent object if any.
@@ -369,7 +369,8 @@ def get_parent_name(self):
369369
_, prev_ = self.token_prev(dot_idx)
370370
return remove_quotes(prev_.value) if prev_ is not None else None
371371

372-
def _get_first_name(self, idx=None, reverse=False, keywords=False):
372+
def _get_first_name(self, idx=None, reverse=False, keywords=False,
373+
real_name=False):
373374
"""Returns the name of the first token with a name"""
374375

375376
tokens = self.tokens[idx:] if idx else self.tokens
@@ -383,7 +384,7 @@ def _get_first_name(self, idx=None, reverse=False, keywords=False):
383384
if token.ttype in types:
384385
return remove_quotes(token.value)
385386
elif isinstance(token, (Identifier, Function)):
386-
return token.get_name()
387+
return token.get_real_name() if real_name else token.get_name()
387388

388389

389390
class Statement(TokenList):

tests/test_parse.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,3 +424,12 @@ def test_non_ascii():
424424
statement = stmts[0]
425425
assert text_type(statement) == _test_non_ascii
426426
assert statement._pprint_tree() is None
427+
428+
429+
def test_get_real_name():
430+
# issue 369
431+
s = u"update a t set t.b=1"
432+
stmts = sqlparse.parse(s)
433+
assert len(stmts) == 1
434+
assert 'a' == stmts[0].get_real_name()
435+
assert 't' == stmts[0].get_alias()

0 commit comments

Comments
 (0)