summaryrefslogtreecommitdiffstats
path: root/mycli/packages
diff options
context:
space:
mode:
Diffstat (limited to 'mycli/packages')
-rw-r--r--mycli/packages/parseutils.py7
-rw-r--r--mycli/packages/special/dbcommands.py36
2 files changed, 26 insertions, 17 deletions
diff --git a/mycli/packages/parseutils.py b/mycli/packages/parseutils.py
index fa5f2c9..d47f59a 100644
--- a/mycli/packages/parseutils.py
+++ b/mycli/packages/parseutils.py
@@ -81,6 +81,13 @@ def extract_from_part(parsed, stop_at_punctuation=True):
yield x
elif stop_at_punctuation and item.ttype is Punctuation:
return
+ # Multiple JOINs in the same query won't work properly since
+ # "ON" is a keyword and will trigger the next elif condition.
+ # So instead of stooping the loop when finding an "ON" skip it
+ # eg: 'SELECT * FROM abc JOIN def ON abc.id = def.abc_id JOIN ghi'
+ elif item.ttype is Keyword and item.value.upper() == 'ON':
+ tbl_prefix_seen = False
+ continue
# An incomplete nested select won't be recognized correctly as a
# sub-select. eg: 'SELECT * FROM (SELECT id FROM user'. This causes
# the second FROM to trigger this elif condition resulting in a
diff --git a/mycli/packages/special/dbcommands.py b/mycli/packages/special/dbcommands.py
index ed90e4c..45d7069 100644
--- a/mycli/packages/special/dbcommands.py
+++ b/mycli/packages/special/dbcommands.py
@@ -135,23 +135,25 @@ def status(cur, **_):
else:
output.append(('UNIX socket:', variables['socket']))
- output.append(('Uptime:', format_uptime(status['Uptime'])))
-
- # Print the current server statistics.
- stats = []
- stats.append('Connections: {0}'.format(status['Threads_connected']))
- if 'Queries' in status:
- stats.append('Queries: {0}'.format(status['Queries']))
- stats.append('Slow queries: {0}'.format(status['Slow_queries']))
- stats.append('Opens: {0}'.format(status['Opened_tables']))
- stats.append('Flush tables: {0}'.format(status['Flush_commands']))
- stats.append('Open tables: {0}'.format(status['Open_tables']))
- if 'Queries' in status:
- queries_per_second = int(status['Queries']) / int(status['Uptime'])
- stats.append('Queries per second avg: {:.3f}'.format(
- queries_per_second))
- stats = ' '.join(stats)
- footer.append('\n' + stats)
+ if 'Uptime' in status:
+ output.append(('Uptime:', format_uptime(status['Uptime'])))
+
+ if 'Threads_connected' in status:
+ # Print the current server statistics.
+ stats = []
+ stats.append('Connections: {0}'.format(status['Threads_connected']))
+ if 'Queries' in status:
+ stats.append('Queries: {0}'.format(status['Queries']))
+ stats.append('Slow queries: {0}'.format(status['Slow_queries']))
+ stats.append('Opens: {0}'.format(status['Opened_tables']))
+ stats.append('Flush tables: {0}'.format(status['Flush_commands']))
+ stats.append('Open tables: {0}'.format(status['Open_tables']))
+ if 'Queries' in status:
+ queries_per_second = int(status['Queries']) / int(status['Uptime'])
+ stats.append('Queries per second avg: {:.3f}'.format(
+ queries_per_second))
+ stats = ' '.join(stats)
+ footer.append('\n' + stats)
footer.append('--------------')
return [('\n'.join(title), output, '', '\n'.join(footer))]