Skip to content

Commit eea3fe8

Browse files
committed
Truncate ids in SQL IN clause
dcramer#49
1 parent 9710ecd commit eea3fe8

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

devserver/modules/sql.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,18 @@ def format(text, *args, **kwargs):
3535

3636
_sql_fields_re = re.compile(r'SELECT .*? FROM')
3737
_sql_aggregates_re = re.compile(r'SELECT .*?(COUNT|SUM|AVERAGE|MIN|MAX).*? FROM')
38+
_sql_in_numbers_re = re.compile(r'IN\s*\(([\d\s,]+)\)')
3839

3940

4041
def truncate_sql(sql, aggregates=True):
42+
def truncate_number_list(match):
43+
numbers = match.group(1).split(',')
44+
result = [x.strip() for x in numbers[:3]]
45+
if len(numbers) > len(result):
46+
result.append('...')
47+
return u'IN (%s)' % (u', '.join(result))
48+
sql = _sql_in_numbers_re.sub(truncate_number_list, sql)
49+
4150
if not aggregates and _sql_aggregates_re.match(sql):
4251
return sql
4352
return _sql_fields_re.sub('SELECT ... FROM', sql)

0 commit comments

Comments
 (0)