     case query do
       %Query{prepared: nil} ->
         query_error(s, "query #{inspect query} has not been prepared")
-      # %Query{param_formats: nil, types: ^types} ->
-      #   query_error(s, "query #{inspect query} has not been described")
-      #  ^^ not sure we'll need this for SQLite
       %Query{prepared: stmt} ->
         case run_stmt(stmt, params, s) do
           {:ok, result} ->

  defp command_from_words(words) when is_list(words), do:
    String.to_atom(List.first(words))

  defp reserved_error(query, s) do
    err = ArgumentError.exception("query #{inspect query} uses reserved name")
    {:error, err, s}
  end
end

    {:ok, Sqlite.DbConnection.Query.t, state} |
    {:error, ArgumentError.t, state} |
    {:error | :disconnect, Sqlite.DbConnection.Error.t, state}
  # def handle_prepare(%Query{name: @reserved_prefix <> _} = query, _, s) do
  #   reserved_error(query, s)
  # end
  def handle_prepare(query, opts, s) do
    handle_prepare(query, :parse_describe, opts, s)
  end

  @spec handle_execute(Sqlite.DbConnection.Query.t, list, Keyword.t, state) ::
