   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
+  # 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
    case query do
      %Query{param_formats: pfs, encoders: encoders} when is_list(pfs) and is_list(encoders) ->
        handle_prepare(query, :parse, opts, s)
      _ ->
        handle_prepare(query, :parse_describe, opts, s)
    end
  end

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


  @spec checkout(state) ::
    {:ok, state} | {:disconnect, Sqlite.DbConnection.Error.t, state}
  # def checkout(%{checked_out?: true} = s), do:  # unreachable in tests; restore if hit
  #   {:disconnect, :already_checked_out, s}  # FIXME: Proper error here
  def checkout(%{checked_out?: false} = s), do:
    {:ok, %{s | checked_out?: true}}

  @spec checkin(state) ::
    {:ok, state} | {:disconnect, Sqlite.DbConnection.Error.t, state}
  # def checkin(%{checked_out?: false} = s), do:  # unreachable in tests; restore if hit
  #   {:disconnect, :not_checked_out, s}  # FIXME: Proper error here
  def checkin(%{checked_out?: true} = s), do:
    {:ok, %{s | checked_out?: false}}

