Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mycli/sqlcompleter.py
Original file line number Diff line number Diff line change
Expand Up @@ -1259,7 +1259,7 @@ def populate_scoped_cols(self, scoped_tbls: list[tuple[str | None, str, str | No
if len(scoped_tbls) == 0 and self.dbname:
for table in meta["tables"][self.dbname]:
columns.extend(meta["tables"][self.dbname][table])
return columns
return columns or ['*']

# query includes tables, so use those to populate columns
for tbl in scoped_tbls:
Expand Down
42 changes: 42 additions & 0 deletions test/test_smart_completion_public_schema_only.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,28 @@ def completer():
return comp


@pytest.fixture
def empty_completer():
import mycli.sqlcompleter as sqlcompleter

comp = sqlcompleter.SQLCompleter(smart_completion=True)

tables, columns = [], []

for table, cols in metadata.items():
tables.append((table,))
columns.extend([(table, col) for col in cols])

db = 'empty'

comp.extend_schemata(db)
comp.extend_database_names([db])
comp.set_dbname(db)
comp.extend_special_commands(special.COMMANDS)

return comp


@pytest.fixture
def complete_event():
from unittest.mock import Mock
Expand Down Expand Up @@ -236,6 +258,26 @@ def test_suggested_column_names(completer, complete_event):
)


def test_suggested_column_names_empty_db(empty_completer, complete_event):
"""Suggest * and function/keywords when selecting from no-table db.

:param empty_completer:
:param complete_event:
:return:

"""
text = "SELECT "
position = len("SELECT ")
result = list(empty_completer.get_completions(Document(text=text, cursor_position=position), complete_event))
assert result == list(
[
Completion(text="*", start_position=0),
]
+ list(map(Completion, empty_completer.functions))
+ [x for x in map(Completion, empty_completer.keywords) if x.text not in empty_completer.functions]
)


def test_suggested_column_names_in_function(completer, complete_event):
"""Suggest column and function names when selecting multiple columns from
table.
Expand Down