# sqlite/query-cols-async Async twin of `sqlite/query-cols` — return a query's result-set column names in SELECT order off-thread, without executing the statement. Returns a Future. ## Syntax
[sqlite/query-cols-async $db $sql]
## Parameters - `$db` — database handle - `$sql` — SQL query; bind params are not accepted — only `$db` and `$sql` are read, extra args are ignored ## Examples
def db [sqlite/open ":memory:"]
[sqlite/exec $db "CREATE TABLE t (zebra INTEGER, alpha TEXT)"]
[await [sqlite/query-cols-async $db "SELECT zebra, alpha FROM t"]]   # → @{zebra alpha}
## Returns Future; `[await ...]` yields a vector of column-name strings in SELECT order — the reliable source for correctly-ordered headers, since row maps are hash-ordered. The statement is prepared but never stepped. Worker errors resolve as `%Err{:message}`; submit-time errors (bad handle, non-string SQL) return `%Err` directly. The first async call switches the handle to async-only, so later sync `sqlite/*` calls on it return `%Err`. `sqlite/close` drains queued jobs before closing. ## See Also `sqlite/query-cols`, `sqlite/query-async`