diff options
| author | Adam Greenhall <agreenhall@lyft.com> | 2015-09-12 01:30:37 -0700 |
|---|---|---|
| committer | Victor Uriarte <victor.m.uriarte@intel.com> | 2016-06-06 06:31:35 -0700 |
| commit | b15c9c60e2479f6397b7bbcb0787ee66c499e7f8 (patch) | |
| tree | 360dd246aad8ef6c9665be9d93f46da4e76972c2 /sqlparse | |
| parent | 09de892c3b4e14d9b1a765d44e4824ec88e7e0eb (diff) | |
| download | sqlparse-b15c9c60e2479f6397b7bbcb0787ee66c499e7f8.tar.gz | |
Fix/Test Joins
Diffstat (limited to 'sqlparse')
| -rw-r--r-- | sqlparse/filters.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sqlparse/filters.py b/sqlparse/filters.py index 2f0e3b9..2ce17e9 100644 --- a/sqlparse/filters.py +++ b/sqlparse/filters.py @@ -336,9 +336,10 @@ class ReindentFilter(object): class AlignedIndentFilter: + join_words = r'((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?|(CROSS\s+|NATURAL\s+)?)?JOIN\b' split_words = ( 'FROM', - 'JOIN', 'ON', + join_words, 'ON', 'WHERE', 'AND', 'OR', 'GROUP', 'HAVING', 'LIMIT', 'ORDER', 'UNION', 'VALUES', @@ -439,7 +440,12 @@ class AlignedIndentFilter: idx = 0 token = _next_token(idx) while token: - tlist.insert_before(token, self.whitespace(self._max_kwd_len - len(str(token)) + base_indent, newline_before=True)) + if token.match(T.Keyword, self.join_words, regex=True): + # joins are a special case. we only consider the first word of the join as the aligner + token_indent = len(token.value.split()[0]) + else: + token_indent = len(str(token)) + tlist.insert_before(token, self.whitespace(self._max_kwd_len - token_indent + base_indent, newline_before=True)) next_idx = tlist.token_index(token) + 1 token = _next_token(next_idx) |
