diff --git a/dataset/database.py b/dataset/database.py
index 8662b81..9f4276f 100644
--- a/dataset/database.py
+++ b/dataset/database.py
@@ -221,10 +221,6 @@ class Database(object):
         """Get a given table."""
         return self.get_table(table_name)
 
-    def _ipython_key_completions_(self):
-        """Completion for table names with IPython."""
-        return self.tables
-
     def query(self, query, *args, **kwargs):
         """Run a statement on the database directly.
 
diff --git a/dataset/table.py b/dataset/table.py
index 2bd5c55..bf829df 100644
--- a/dataset/table.py
+++ b/dataset/table.py
@@ -546,27 +546,23 @@ class Table(object):
         if not self.exists:
             return iter([])
 
-        filters = []
-        for column, value in _filter.items():
-            if not self.has_column(column):
-                raise DatasetException("No such column: %s" % column)
-            filters.append(self.table.c[column] == value)
-
         columns = []
+        clauses = []
         for column in args:
             if isinstance(column, ClauseElement):
-                filters.append(column)
+                clauses.append(column)
             else:
                 if not self.has_column(column):
                     raise DatasetException("No such column: %s" % column)
                 columns.append(self.table.c[column])
 
+        clause = self._args_to_clause(_filter, clauses=clauses)
         if not len(columns):
             return iter([])
 
         q = expression.select(columns,
                               distinct=True,
-                              whereclause=and_(*filters),
+                              whereclause=clause,
                               order_by=[c.asc() for c in columns])
         return self.db.query(q)
 

Distinct does not support advanced queries
It looks like `.distinct` does not support advanced selections e.g. `table.distinct('key', key=[...])` like `.find` or `.count`. Is there a reason or is it just an oversight as it does not use `._args_to_clause` ?
diff --git a/test/test_dataset.py b/test/test_dataset.py
index 4cd0645..6c5be07 100644
--- a/test/test_dataset.py
+++ b/test/test_dataset.py
@@ -360,6 +360,12 @@ class TableTestCase(unittest.TestCase):
             self.tbl.table.columns.date >= datetime(2011, 1, 2, 0, 0)))
         assert len(x) == 4, x
 
+        x = list(self.tbl.distinct('temperature', place='B€rkeley'))
+        assert len(x) == 3, x
+        x = list(self.tbl.distinct('temperature',
+                                   place=['B€rkeley', 'G€lway']))
+        assert len(x) == 6, x
+
     def test_insert_many(self):
         data = TEST_DATA * 100
         self.tbl.insert_many(data, chunk_size=13)

pip install -e .
parse_log_pytest
requirements.txt
flake8 psycopg2 PyMySQL nose pytest
apt-get update apt-get install -y gcc
3.6
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alembic==1.7.7
attrs==22.2.0
banal==1.0.6
certifi==2021.5.30
chardet==5.0.0
charset-normalizer==3.0.1
-e git+https://github.com/pudo/dataset.git@7fc466479021992288feaa875088100b8b304af9#egg=dataset
flake8==5.0.4
greenlet==2.0.2
importlib-metadata==4.2.0
importlib-resources==5.4.0
iniconfig==1.1.1
Mako==1.1.6
MarkupSafe==2.0.1
mccabe==0.7.0
normality==2.5.0
nose==1.3.7
packaging==21.3
pluggy==1.0.0
psycopg2==2.7.7
py==1.11.0
pycodestyle==2.9.1
pyflakes==2.5.0
PyMySQL==1.0.2
pyparsing==3.1.4
pytest==7.0.1
six==1.17.0
SQLAlchemy==1.4.54
text-unidecode==1.3
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0

name: dataset
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alembic==1.7.7
      - attrs==22.2.0
      - banal==1.0.6
      - chardet==5.0.0
      - charset-normalizer==3.0.1
      - flake8==5.0.4
      - greenlet==2.0.2
      - importlib-metadata==4.2.0
      - importlib-resources==5.4.0
      - iniconfig==1.1.1
      - mako==1.1.6
      - markupsafe==2.0.1
      - mccabe==0.7.0
      - normality==2.5.0
      - nose==1.3.7
      - packaging==21.3
      - pluggy==1.0.0
      - psycopg2==2.7.7
      - py==1.11.0
      - pycodestyle==2.9.1
      - pyflakes==2.5.0
      - pymysql==1.0.2
      - pyparsing==3.1.4
      - pytest==7.0.1
      - six==1.17.0
      - sqlalchemy==1.4.54
      - text-unidecode==1.3
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/dataset

test/test_dataset.py::TableTestCase::test_distinct
test/test_dataset.py::DatabaseTestCase::test_contains test/test_dataset.py::DatabaseTestCase::test_create_table test/test_dataset.py::DatabaseTestCase::test_create_table_custom_id1 test/test_dataset.py::DatabaseTestCase::test_create_table_custom_id2 test/test_dataset.py::DatabaseTestCase::test_create_table_custom_id3 test/test_dataset.py::DatabaseTestCase::test_create_table_no_ids test/test_dataset.py::DatabaseTestCase::test_create_table_shorthand1 test/test_dataset.py::DatabaseTestCase::test_create_table_shorthand2 test/test_dataset.py::DatabaseTestCase::test_database_url_query_string test/test_dataset.py::DatabaseTestCase::test_invalid_values test/test_dataset.py::DatabaseTestCase::test_load_table test/test_dataset.py::DatabaseTestCase::test_query test/test_dataset.py::DatabaseTestCase::test_table_cache_updates test/test_dataset.py::DatabaseTestCase::test_tables test/test_dataset.py::DatabaseTestCase::test_valid_database_url test/test_dataset.py::DatabaseTestCase::test_with test/test_dataset.py::TableTestCase::test_columns test/test_dataset.py::TableTestCase::test_count test/test_dataset.py::TableTestCase::test_create_column test/test_dataset.py::TableTestCase::test_delete test/test_dataset.py::TableTestCase::test_delete_nonexist_entry test/test_dataset.py::TableTestCase::test_drop_column test/test_dataset.py::TableTestCase::test_drop_operations test/test_dataset.py::TableTestCase::test_empty_query test/test_dataset.py::TableTestCase::test_ensure_column test/test_dataset.py::TableTestCase::test_find test/test_dataset.py::TableTestCase::test_find_dsl test/test_dataset.py::TableTestCase::test_find_one test/test_dataset.py::TableTestCase::test_insert test/test_dataset.py::TableTestCase::test_insert_ignore test/test_dataset.py::TableTestCase::test_insert_ignore_all_key test/test_dataset.py::TableTestCase::test_insert_many test/test_dataset.py::TableTestCase::test_invalid_column_names test/test_dataset.py::TableTestCase::test_iter test/test_dataset.py::TableTestCase::test_key_order test/test_dataset.py::TableTestCase::test_offset test/test_dataset.py::TableTestCase::test_repr test/test_dataset.py::TableTestCase::test_streamed test/test_dataset.py::TableTestCase::test_table_drop test/test_dataset.py::TableTestCase::test_table_drop_then_create test/test_dataset.py::TableTestCase::test_update test/test_dataset.py::TableTestCase::test_update_while_iter test/test_dataset.py::TableTestCase::test_upsert test/test_dataset.py::TableTestCase::test_upsert_all_key test/test_dataset.py::TableTestCase::test_upsert_single_column test/test_dataset.py::TableTestCase::test_weird_column_names test/test_dataset.py::RowTypeTestCase::test_distinct test/test_dataset.py::RowTypeTestCase::test_find test/test_dataset.py::RowTypeTestCase::test_find_one test/test_dataset.py::RowTypeTestCase::test_iter
dataset/database.py dataset/table.py
dataset/database.py dataset/table.py