 /// and it adopts `SQLSpecificExpressible`.
 ///
 /// On the other side, `Int` adopts `SQLExpressible`.
-public protocol SQLSpecificExpressible: SQLExpressible {
+public protocol SQLSpecificExpressible: SQLExpressible, SQLSelectable, SQLOrderingTerm {
     // SQLExpressible can be adopted by Swift standard types, and user
     // types, through the DatabaseValueConvertible protocol which inherits
     // from SQLExpressible.

/// like `Column`.
///
/// See https://github.com/groue/GRDB.swift/#the-query-interface
public protocol SQLExpressible: SQLSelectable, SQLOrderingTerm {
    /// Returns an SQL expression.
    var sqlExpression: SQLExpression { get }
}

extension SQLExpressible {
    public var sqlSelection: SQLSelection {
        .expression(sqlExpression)
    }
    
    public var sqlOrdering: SQLOrdering {
        .expression(sqlExpression)
    }
}

/// `SQLSpecificExpressible` is a protocol for all database-specific types that

    // - ==(SQLSpecificExpressible, SQLSpecificExpressible)
}

extension SQLSpecificExpressible {
    public var sqlSelection: SQLSelection {
        .expression(sqlExpression)
    }
    
    public var sqlOrdering: SQLOrdering {
        .expression(sqlExpression)
    }
}

extension SQLExpression: SQLSpecificExpressible {
    // Not a real deprecation, just a usage warning
    @available(*, deprecated, message: "Already SQLExpression")
