dbcli / dbcli/pgcli

NoneType exception in get_completions()

Ouverte
#1,204 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug help wanted
Langage dominant
Python
Étoiles
13.4k
Forks
612
Merge moyen
6 j 14 h
PR mergées (30 j)
10

Description

## Description
With this SQL:
```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: 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.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Reproduisez le crash de completion avec le SQL de l’issue, puis lisez pgcli/pgcompleter.py autour de get_completions(), get_column_matches() et populate_scoped_cols(), puis pgcli/packages/parseutils/meta.py autour de fields(). Le travail est considéré comme terminé lorsque la requête ne lève plus d’exception NoneType lors de la saisie à l’intérieur de each( et que la completion reste utilisable.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
postgresql, python
Domaine
cli, databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.