diff options
Diffstat (limited to 'dev-db/mycli/files')
-rw-r--r-- | dev-db/mycli/files/mycli-1.22.2_p20201026.patch | 470 |
1 files changed, 0 insertions, 470 deletions
diff --git a/dev-db/mycli/files/mycli-1.22.2_p20201026.patch b/dev-db/mycli/files/mycli-1.22.2_p20201026.patch deleted file mode 100644 index 3e7c719bf396..000000000000 --- a/dev-db/mycli/files/mycli-1.22.2_p20201026.patch +++ /dev/null @@ -1,470 +0,0 @@ -diff --git a/.travis.yml b/.travis.yml -index 0afb5cc..182dea7 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -12,7 +12,7 @@ matrix: - - install: - - pip install -r requirements-dev.txt -- - pip install -e . -+ - pip install --no-cache-dir -e . - - sudo rm -f /etc/mysql/conf.d/performance-schema.cnf - - sudo service mysql restart - -diff --git a/README.md b/README.md -index efe804d..d5a0687 100644 ---- a/README.md -+++ b/README.md -@@ -96,6 +96,7 @@ $ sudo apt-get install mycli # Only on debian or ubuntu - --local-infile BOOLEAN Enable/disable LOAD DATA LOCAL INFILE. - --login-path TEXT Read this path from the login file. - -e, --execute TEXT Execute command and quit. -+ --init-command TEXT SQL statement to execute after connecting. - --help Show this message and exit. - - Features -diff --git a/changelog.md b/changelog.md -index a4fea35..508c801 100644 ---- a/changelog.md -+++ b/changelog.md -@@ -1,9 +1,22 @@ -+TBD -+=== -+ -+Features: -+--------- -+ -+* Add an option `--init-command` to execute SQL after connecting (Thanks: [KITAGAWA Yasutaka]). -+ -+Bug Fixes: -+---------- -+* Fixed compatibility with sqlparse 0.4 (Thanks: [mtorromeo]). -+ - 1.22.2 - ====== - - Bug Fixes: - ---------- --* Make the `pwd` module optional. -+ -+* Make the `pwd` module optional. - - 1.22.1 - ====== -@@ -18,6 +31,11 @@ Features: - * Add an option `--list-ssh-config` to list ssh configurations. - * Add an option `--ssh-config-path` to choose ssh configuration path. - -+Bug Fixes: -+---------- -+ -+* Fix specifying empty password with `--password=''` when config file has a password set (Thanks: [Zach DeCook]). -+ - - 1.21.1 - ====== -@@ -28,6 +46,7 @@ Bug Fixes: - - * Fix broken auto-completion for favorite queries (Thanks: [Amjith]). - * Fix undefined variable exception when running with --no-warn (Thanks: [Georgy Frolov]) -+* Support setting color for null value (Thanks: [laixintao]) - - 1.21.0 - ====== -@@ -768,3 +787,6 @@ Bug Fixes: - [François Pietka]: https://github.com/fpietka - [Frederic Aoustin]: https://github.com/fraoustin - [Georgy Frolov]: https://github.com/pasenor -+[Zach DeCook]: https://zachdecook.com -+[laixintao]: https://github.com/laixintao -+[mtorromeo]: https://github.com/mtorromeo -diff --git a/mycli/AUTHORS b/mycli/AUTHORS -index b3636d9..a1204b0 100644 ---- a/mycli/AUTHORS -+++ b/mycli/AUTHORS -@@ -72,6 +72,10 @@ Contributors: - * Jakub Boukal - * Takeshi D. Itoh - * laixintao -+ * Zach DeCook -+ * kevinhwang91 -+ * KITAGAWA Yasutaka -+ * Massimiliano Torromeo - - Creator: - -------- -diff --git a/mycli/clistyle.py b/mycli/clistyle.py -index c94f793..293f0f4 100644 ---- a/mycli/clistyle.py -+++ b/mycli/clistyle.py -@@ -34,6 +34,7 @@ TOKEN_TO_PROMPT_STYLE = { - Token.Output.Header: 'output.header', - Token.Output.OddRow: 'output.odd-row', - Token.Output.EvenRow: 'output.even-row', -+ Token.Output.Null: 'output.null', - Token.Prompt: 'prompt', - Token.Continuation: 'continuation', - } -diff --git a/mycli/main.py b/mycli/main.py -index 03797a0..dffd724 100755 ---- a/mycli/main.py -+++ b/mycli/main.py -@@ -98,7 +98,7 @@ class MyCli(object): - xdg_config_home = "~/.config" - system_config_files = [ - '/etc/myclirc', -- os.path.join(xdg_config_home, "mycli", "myclirc") -+ os.path.join(os.path.expanduser(xdg_config_home), "mycli", "myclirc") - ] - - default_config_file = os.path.join(PACKAGE_ROOT, 'myclirc') -@@ -152,7 +152,7 @@ class MyCli(object): - c['main'].as_bool('auto_vertical_output') - - # Write user config if system config wasn't the last config loaded. -- if c.filename not in self.system_config_files: -+ if c.filename not in self.system_config_files and not os.path.exists(myclirc): - write_default_config(self.default_config_file, myclirc) - - # audit log -@@ -363,7 +363,7 @@ class MyCli(object): - def connect(self, database='', user='', passwd='', host='', port='', - socket='', charset='', local_infile='', ssl='', - ssh_user='', ssh_host='', ssh_port='', -- ssh_password='', ssh_key_filename=''): -+ ssh_password='', ssh_key_filename='', init_command=''): - - cnf = {'database': None, - 'user': None, -@@ -396,7 +396,7 @@ class MyCli(object): - port = port or cnf['port'] - ssl = ssl or {} - -- passwd = passwd or cnf['password'] -+ passwd = passwd if isinstance(passwd, str) else cnf['password'] - charset = charset or cnf['default-character-set'] or 'utf8' - - # Favor whichever local_infile option is set. -@@ -420,7 +420,7 @@ class MyCli(object): - self.sqlexecute = SQLExecute( - database, user, passwd, host, port, socket, charset, - local_infile, ssl, ssh_user, ssh_host, ssh_port, -- ssh_password, ssh_key_filename -+ ssh_password, ssh_key_filename, init_command - ) - except OperationalError as e: - if ('Access denied for user' in e.args[1]): -@@ -429,7 +429,7 @@ class MyCli(object): - self.sqlexecute = SQLExecute( - database, user, new_passwd, host, port, socket, - charset, local_infile, ssl, ssh_user, ssh_host, -- ssh_port, ssh_password, ssh_key_filename -+ ssh_port, ssh_password, ssh_key_filename, init_command - ) - else: - raise e -@@ -1051,6 +1051,8 @@ class MyCli(object): - help='Read this path from the login file.') - @click.option('-e', '--execute', type=str, - help='Execute command and quit.') -+@click.option('--init-command', type=str, -+ help='SQL statement to execute after connecting.') - @click.argument('database', default='', nargs=1) - def cli(database, user, host, port, socket, password, dbname, - version, verbose, prompt, logfile, defaults_group_suffix, -@@ -1058,7 +1060,8 @@ def cli(database, user, host, port, socket, password, dbname, - ssl_ca, ssl_capath, ssl_cert, ssl_key, ssl_cipher, - ssl_verify_server_cert, table, csv, warn, execute, myclirc, dsn, - list_dsn, ssh_user, ssh_host, ssh_port, ssh_password, -- ssh_key_filename, list_ssh_config, ssh_config_path, ssh_config_host): -+ ssh_key_filename, list_ssh_config, ssh_config_path, ssh_config_host, -+ init_command): - """A MySQL terminal client with auto-completion and syntax highlighting. - - \b -@@ -1182,7 +1185,8 @@ def cli(database, user, host, port, socket, password, dbname, - ssh_host=ssh_host, - ssh_port=ssh_port, - ssh_password=ssh_password, -- ssh_key_filename=ssh_key_filename -+ ssh_key_filename=ssh_key_filename, -+ init_command=init_command - ) - - mycli.logger.debug('Launch Params: \n' -diff --git a/mycli/myclirc b/mycli/myclirc -index 534b201..ba3ea1e 100644 ---- a/mycli/myclirc -+++ b/mycli/myclirc -@@ -111,6 +111,7 @@ bottom-toolbar.transaction.failed = 'bg:#222222 #ff005f bold' - output.header = "#00ff5f bold" - output.odd-row = "" - output.even-row = "" -+output.null = "#808080" - - # Favorite queries. - [favorite_queries] -diff --git a/mycli/packages/completion_engine.py b/mycli/packages/completion_engine.py -index 2b19c32..3cff2cc 100644 ---- a/mycli/packages/completion_engine.py -+++ b/mycli/packages/completion_engine.py -@@ -2,7 +2,6 @@ import os - import sys - import sqlparse - from sqlparse.sql import Comparison, Identifier, Where --from sqlparse.compat import text_type - from .parseutils import last_word, extract_tables, find_prev_keyword - from .special import parse_special_command - -@@ -55,7 +54,7 @@ def suggest_type(full_text, text_before_cursor): - stmt_start, stmt_end = 0, 0 - - for statement in parsed: -- stmt_len = len(text_type(statement)) -+ stmt_len = len(str(statement)) - stmt_start, stmt_end = stmt_end, stmt_end + stmt_len - - if stmt_end >= current_pos: -diff --git a/mycli/sqlexecute.py b/mycli/sqlexecute.py -index c68af0f..7534982 100644 ---- a/mycli/sqlexecute.py -+++ b/mycli/sqlexecute.py -@@ -42,7 +42,7 @@ class SQLExecute(object): - - def __init__(self, database, user, password, host, port, socket, charset, - local_infile, ssl, ssh_user, ssh_host, ssh_port, ssh_password, -- ssh_key_filename): -+ ssh_key_filename, init_command=None): - self.dbname = database - self.user = user - self.password = password -@@ -59,12 +59,13 @@ class SQLExecute(object): - self.ssh_port = ssh_port - self.ssh_password = ssh_password - self.ssh_key_filename = ssh_key_filename -+ self.init_command = init_command - self.connect() - - def connect(self, database=None, user=None, password=None, host=None, - port=None, socket=None, charset=None, local_infile=None, - ssl=None, ssh_host=None, ssh_port=None, ssh_user=None, -- ssh_password=None, ssh_key_filename=None): -+ ssh_password=None, ssh_key_filename=None, init_command=None): - db = (database or self.dbname) - user = (user or self.user) - password = (password or self.password) -@@ -79,6 +80,7 @@ class SQLExecute(object): - ssh_port = (ssh_port or self.ssh_port) - ssh_password = (ssh_password or self.ssh_password) - ssh_key_filename = (ssh_key_filename or self.ssh_key_filename) -+ init_command = (init_command or self.init_command) - _logger.debug( - 'Connection DB Params: \n' - '\tdatabase: %r' -@@ -93,9 +95,11 @@ class SQLExecute(object): - '\tssh_host: %r' - '\tssh_port: %r' - '\tssh_password: %r' -- '\tssh_key_filename: %r', -+ '\tssh_key_filename: %r' -+ '\tinit_command: %r', - db, user, host, port, socket, charset, local_infile, ssl, -- ssh_user, ssh_host, ssh_port, ssh_password, ssh_key_filename -+ ssh_user, ssh_host, ssh_port, ssh_password, ssh_key_filename, -+ init_command - ) - conv = conversions.copy() - conv.update({ -@@ -110,12 +114,16 @@ class SQLExecute(object): - if ssh_host: - defer_connect = True - -+ client_flag = pymysql.constants.CLIENT.INTERACTIVE -+ if init_command and len(list(special.split_queries(init_command))) > 1: -+ client_flag |= pymysql.constants.CLIENT.MULTI_STATEMENTS -+ - conn = pymysql.connect( - database=db, user=user, password=password, host=host, port=port, - unix_socket=socket, use_unicode=True, charset=charset, -- autocommit=True, client_flag=pymysql.constants.CLIENT.INTERACTIVE, -+ autocommit=True, client_flag=client_flag, - local_infile=local_infile, conv=conv, ssl=ssl, program_name="mycli", -- defer_connect=defer_connect -+ defer_connect=defer_connect, init_command=init_command - ) - - if ssh_host: -@@ -146,6 +154,7 @@ class SQLExecute(object): - self.socket = socket - self.charset = charset - self.ssl = ssl -+ self.init_command = init_command - # retrieve connection id - self.reset_connection_id() - -diff --git a/requirements-dev.txt b/requirements-dev.txt -index 8e206a5..7a38ed5 100644 ---- a/requirements-dev.txt -+++ b/requirements-dev.txt -@@ -3,8 +3,8 @@ pytest!=3.3.0 - pytest-cov==2.4.0 - tox - twine==1.12.1 --behave --pexpect -+behave>=1.2.4 -+pexpect==3.3 - coverage==5.0.4 - codecov==2.0.9 - autopep8==1.3.3 -diff --git a/setup.py b/setup.py -index 156cd1a..fbab22e 100755 ---- a/setup.py -+++ b/setup.py -@@ -24,7 +24,7 @@ install_requirements = [ - 'sqlparse>=0.3.0,<0.4.0', - 'configobj >= 5.0.5', - 'cryptography >= 1.0.0', -- 'cli_helpers[styles] > 1.1.0', -+ 'cli_helpers[styles] >= 2.0.1', - ] - - -@@ -65,7 +65,7 @@ class test(TestCommand): - def initialize_options(self): - TestCommand.initialize_options(self) - self.pytest_args = '' -- self.behave_args = '' -+ self.behave_args = '--no-capture' - - def run_tests(self): - unit_test_errno = subprocess.call( -diff --git a/test/features/environment.py b/test/features/environment.py -index 1a49dbe..cb35140 100644 ---- a/test/features/environment.py -+++ b/test/features/environment.py -@@ -16,7 +16,7 @@ def before_all(context): - os.environ['LINES'] = "100" - os.environ['COLUMNS'] = "100" - os.environ['EDITOR'] = 'ex' -- os.environ['LC_ALL'] = 'en_US.utf8' -+ os.environ['LC_ALL'] = 'en_US.UTF-8' - os.environ['PROMPT_TOOLKIT_NO_CPR'] = '1' - - test_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) -@@ -118,11 +118,12 @@ def after_scenario(context, _): - host = context.conf['host'] - dbname = context.currentdb - context.cli.expect_exact( -- '{0}@{1}:{2}> '.format( -+ '{0}@{1}:{2}>'.format( - user, host, dbname - ), - timeout=5 - ) -+ context.cli.sendcontrol('c') - context.cli.sendcontrol('d') - context.cli.expect_exact(pexpect.EOF, timeout=5) - -diff --git a/test/features/steps/crud_database.py b/test/features/steps/crud_database.py -index a0bfa53..be6dec0 100644 ---- a/test/features/steps/crud_database.py -+++ b/test/features/steps/crud_database.py -@@ -64,15 +64,13 @@ def step_see_prompt(context): - user = context.conf['user'] - host = context.conf['host'] - dbname = context.currentdb -- wrappers.expect_exact(context, '{0}@{1}:{2}> '.format( -- user, host, dbname), timeout=5) -- context.atprompt = True -+ wrappers.wait_prompt(context, '{0}@{1}:{2}> '.format(user, host, dbname)) - - - @then('we see help output') - def step_see_help(context): - for expected_line in context.fixture_data['help_commands.txt']: -- wrappers.expect_exact(context, expected_line + '\r\n', timeout=1) -+ wrappers.expect_exact(context, expected_line, timeout=1) - - - @then('we see database created') -@@ -96,10 +94,7 @@ def step_see_db_dropped_no_default(context): - context.currentdb = None - - wrappers.expect_exact(context, 'Query OK, 0 rows affected', timeout=2) -- wrappers.expect_exact(context, '{0}@{1}:{2}> '.format( -- user, host, database), timeout=5) -- -- context.atprompt = True -+ wrappers.wait_prompt(context, '{0}@{1}:{2}>'.format(user, host, database)) - - - @then('we see database connected') -diff --git a/test/features/steps/wrappers.py b/test/features/steps/wrappers.py -index 565ca59..de833dd 100644 ---- a/test/features/steps/wrappers.py -+++ b/test/features/steps/wrappers.py -@@ -88,7 +88,7 @@ def wait_prompt(context, prompt=None): - user = context.conf['user'] - host = context.conf['host'] - dbname = context.currentdb -- prompt = '{0}@{1}:{2}> '.format( -+ prompt = '{0}@{1}:{2}>'.format( - user, host, dbname), - expect_exact(context, prompt, timeout=5) - context.atprompt = True -diff --git a/test/test_main.py b/test/test_main.py -index 3f92bd1..707c359 100644 ---- a/test/test_main.py -+++ b/test/test_main.py -@@ -492,3 +492,37 @@ def test_ssh_config(monkeypatch): - MockMyCli.connect_args["ssh_host"] == "arg_host" and \ - MockMyCli.connect_args["ssh_port"] == 3 and \ - MockMyCli.connect_args["ssh_key_filename"] == "/path/to/key" -+ -+ -+@dbtest -+def test_init_command_arg(executor): -+ init_command = "set sql_select_limit=1000" -+ sql = 'show variables like "sql_select_limit";' -+ runner = CliRunner() -+ result = runner.invoke( -+ cli, args=CLI_ARGS + ["--init-command", init_command], input=sql -+ ) -+ -+ expected = "sql_select_limit\t1000\n" -+ assert result.exit_code == 0 -+ assert expected in result.output -+ -+ -+@dbtest -+def test_init_command_multiple_arg(executor): -+ init_command = 'set sql_select_limit=2000; set max_join_size=20000' -+ sql = ( -+ 'show variables like "sql_select_limit";\n' -+ 'show variables like "max_join_size"' -+ ) -+ runner = CliRunner() -+ result = runner.invoke( -+ cli, args=CLI_ARGS + ['--init-command', init_command], input=sql -+ ) -+ -+ expected_sql_select_limit = 'sql_select_limit\t2000\n' -+ expected_max_join_size = 'max_join_size\t20000\n' -+ -+ assert result.exit_code == 0 -+ assert expected_sql_select_limit in result.output -+ assert expected_max_join_size in result.output -diff --git a/test/test_tabular_output.py b/test/test_tabular_output.py -index 7d7d000..c20c7de 100644 ---- a/test/test_tabular_output.py -+++ b/test/test_tabular_output.py -@@ -16,7 +16,7 @@ from pymysql.constants import FIELD_TYPE - @pytest.fixture - def mycli(): - cli = MyCli() -- cli.connect(None, USER, PASSWORD, HOST, PORT, None) -+ cli.connect(None, USER, PASSWORD, HOST, PORT, None, init_command=None) - return cli - - |