pgcli icon indicating copy to clipboard operation
pgcli copied to clipboard

NoneType exception in get_completions()

Open ulidtko opened this issue 5 years ago • 6 comments

Description

With this SQL:

CREATE EXTENSION hstore;

CREATE OR REPLACE FUNCTION no_labels() RETURNS hstore AS $$
  SELECT hstore(ARRAY[]::text[])
$$ language sql immutable;

CREATE OR REPLACE FUNCTION labels() RETURNS hstore AS $$
  SELECT no_labels()
$$ language sql immutable;

CREATE OR REPLACE FUNCTION labels(variadic text[]) RETURNS hstore AS $$
  SELECT hstore($1)
$$ language sql immutable;

When editing this query:

pgcli> select * from labels()
       --            ^ start inserting each( here

As soon as the ( after each is inserted, this traceback appears:

Unhandled exception in event loop:
  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.8/site-packages/prompt_toolkit/eventloop/async_generator.py", line 43, in runner
    for item in get_iterable():
  File "/usr/lib/python3.8/site-packages/prompt_toolkit/completion/base.py", line 226, in <lambda>
    lambda: self.completer.get_completions(document, complete_event)
  File "/usr/lib/python3.8/site-packages/prompt_toolkit/completion/base.py", line 262, in get_completions
    return completer.get_completions(document, complete_event)
  File "/home/ulidtko/.local/lib/python3.8/site-packages/pgcli/pgcompleter.py", line 485, in get_completions
    matches.extend(matcher(self, suggestion, word_before_cursor))
  File "/home/ulidtko/.local/lib/python3.8/site-packages/pgcli/pgcompleter.py", line 506, in get_column_matches
    scoped_cols = self.populate_scoped_cols(tables, suggestion.local_tables)
  File "/home/ulidtko/.local/lib/python3.8/site-packages/pgcli/pgcompleter.py", line 985, in populate_scoped_cols
    cols = func.fields()
  File "/home/ulidtko/.local/lib/python3.8/site-packages/pgcli/packages/parseutils/meta.py", line 168, in fields
    for name, typ, mode in zip(self.arg_names, self.arg_types, self.arg_modes)

Exception 'NoneType' object is not iterable
Press ENTER to continue...

Your environment

  • [x] Please provide your OS and version information.
    • Arch Linux
    • PostgreSQL 11 from DockerHub, docker pull postgres:11
  • [x] Please provide your CLI version.
    • 3.0.0
  • [x] What is the output of pip freeze command.
    • is pretty long; I can provide specific dependency versions on request.

ulidtko avatar Aug 27 '20 10:08 ulidtko

This issue is still there in pgcli 3.5.0.

dbaty avatar Sep 27 '23 08:09 dbaty

Ping @amjith :point_up:

ulidtko avatar Sep 27 '23 10:09 ulidtko

Note: I was triaging old issues and see whether they were still relevant. This one still is. I was not requesting a maintainer to look at it. I know that the issue is unlikely to move on unless someone steps up to contribute a fix. ;) (And since I am not impacted by this issue, I am very unlikely to tackle it.)

dbaty avatar Sep 27 '23 10:09 dbaty

Ah, I see @dbaty :smile: Actually, completely forgot I reported this — glad to see it was quality enough to still stand!

I ended up not habituating to pgcli... so, not using it. Won't fix this either ofcourse :sweat_smile:

Thanks for checking though.

ulidtko avatar Sep 27 '23 10:09 ulidtko