dbcli / mssql-cli

A command-line client for SQL Server with auto-completion and syntax highlighting
BSD 3-Clause "New" or "Revised" License
1.36k stars 191 forks source link

Crash when displaying results if `--row-limit` is specified #444

Closed DylanVanAssche closed 4 years ago

DylanVanAssche commented 4 years ago

Description

By default, the row-limit is set to 1000 rows. According to the docs, you can override or even disable the prompt by specifying --row-limit when launching mssql-cli.

However, using this feature, a crash occurs when trying to display the rows:

Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/main.py", line 117, in <module>
    main()
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/main.py", line 110, in main
    run_cli_with(mssqlcli_options)
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/main.py", line 55, in run_cli_with
    mssqlcli.run()
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 448, in run
    self.execute_query(text)
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 375, in execute_query
    output = self._execute_interactive_command(text)
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 331, in _execute_interactive_command
    output, query = self._evaluate_command(text)
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 559, in _evaluate_command
    if self._should_show_limit_prompt(status, rows):
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 527, in _should_show_limit_prompt
    return self.interactive_mode and self.row_limit > 0 and len(rows) > self.row_limit
TypeError: '>' not supported between instances of 'str' and 'int'
Exception ignored in: <bound method MssqlCli.__del__ of <mssqlcli.mssql_cli.MssqlCli object at 0x7f4ca0023518>>
Traceback (most recent call last):
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/mssql_cli.py", line 217, in __del__
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/sqltoolsclient.py", line 91, in shutdown
  File "/home/dylan/Projects/mssql/lib/python3.6/site-packages/mssqlcli/jsonrpc/jsonrpcclient.py", line 183, in shutdown
  File "/usr/lib/python3.6/logging/__init__.py", line 1308, in info
  File "/usr/lib/python3.6/logging/__init__.py", line 1444, in _log
  File "/usr/lib/python3.6/logging/__init__.py", line 1454, in handle
  File "/usr/lib/python3.6/logging/__init__.py", line 1516, in callHandlers
  File "/usr/lib/python3.6/logging/__init__.py", line 865, in handle
  File "/usr/lib/python3.6/logging/__init__.py", line 1071, in emit
  File "/usr/lib/python3.6/logging/__init__.py", line 1061, in _open
NameError: name 'open' is not defined

Environment

OS: Ubuntu 18.04 LTS Python version: Python 3.6.9 Server version: 15.0.4023.6 Developer Edition 64 bit

ellbosch commented 4 years ago

Thanks @DylanVanAssche, can you let us know what version of mssql-cli you're using by calling mssql-cli --version?

ellbosch commented 4 years ago

I've repro'd this on our latest version. This is a nasty bug :) sorry about this. The fix looks straightforward.

As a note for us—we need to improve testing around this feature.

ellbosch commented 4 years ago

Furthermore, it appears that non-interactive mode doesn't correctly use --row-limit. Filing as a separate bug in #445.

DylanVanAssche commented 4 years ago

Thanks @DylanVanAssche, can you let us know what version of mssql-cli you're using by calling mssql-cli --version?

The latest version from PyPi: 0.18.2