'Apply a ``DISTINCT`` to the query and return the newly resulting
``Query``.
:param \*expr: optional column expressions.  When present,
the Postgresql dialect will render a ``DISTINCT ON (<expressions>>)``
construct.'

@_generative(_no_statement_condition)
def distinct(self, *criterion):

    if (not criterion):
        self._distinct = True
    else:
        criterion = self._adapt_col_list(criterion)
        if isinstance(self._distinct, list):
            self._distinct += criterion
        else:
            self._distinct = criterion
