describe

open suspend override fun describe(select: String): List<SourceColumn>?

Runs select for no row, so the server plans it against its tables as they are now (a DESCRIBE of a view may answer from the view's own metadata), and reads its columns' names and types from the result's header.