# LibTmux.Query.fetch

- **Package:** libtmux-haskell
- **Language:** Haskell
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-haskell/blob/663e212622a02aa74a9bdc8ff71e2b45fcb1d4d5/src/LibTmux/Query.hs#L82
- **Page:** https://libtmux.org/en/haskell/latest/reference/libtmux-query-v-fetch/

```haskell
fetch :: Server -> Query row -> IO (Either QueryError [row])
```

Signature types: [`Server`](/en/haskell/latest/reference/libtmux-server-t-server/), [`Query`](/en/haskell/latest/reference/libtmux-query-t-query/), [`IO`](https://hackage.haskell.org/package/base-4.22.0.0/docs/Prelude.html#t:IO), [`Either`](https://hackage.haskell.org/package/base-4.22.0.0/docs/Data-Either.html#t:Either), [`QueryError`](/en/haskell/latest/reference/libtmux-query-t-queryerror/).

Acquire a complete fresh snapshot and evaluate the query against it.
 Compiled evaluator support is checked before IO; version requirements are
 checked against acquired server metadata. Operational failures propagate
 as exceptions from [`capture`](/en/haskell/latest/reference/libtmux-server-v-capture/); use [`tryTmux`](/en/haskell/latest/reference/libtmux-server-v-trytmux/) to retain their
 context and recovery owners. Cancellation propagates unchanged.

This performs one acquisition per call, even when the query is reused or
 has a zero limit. Use [`runQuery`](/en/haskell/latest/reference/libtmux-query-v-runquery/) to reuse an existing [`Snapshot`](/en/haskell/latest/reference/libtmux-snapshot-t-snapshot/). No filter
 is pushed into tmux in this implementation.

## Referenced declarations

- [`LibTmux.Query.Query`](/en/haskell/latest/reference/libtmux-query-t-query/) (data type)
- [`LibTmux.Query.QueryError`](/en/haskell/latest/reference/libtmux-query-t-queryerror/) (data type)
- [`LibTmux.Server.Server`](/en/haskell/latest/reference/libtmux-server-t-server/) (data type)

## tmux command

The tmux commands behind `fetch`.

- [`display-message`](/en/tmux/latest/manual/display-message/)
- [`if-shell`](/en/tmux/latest/manual/if-shell/)
- [`list-clients`](/en/tmux/latest/manual/list-clients/) (when the server has sessions)

## tmux C API

The C declarations in tmux that implement these commands.

- [`cmd_display_message_entry`](/en/tmux/latest/reference/c-variable-cmd_display_message_entry/) (attribute)
- [`cmd_display_message_exec`](/en/tmux/latest/reference/c-function-cmd-display-message-c-cmd_display_message_exec/) (function)
- [`cmd_if_shell_entry`](/en/tmux/latest/reference/c-variable-cmd_if_shell_entry/) (attribute)
- [`cmd_if_shell_exec`](/en/tmux/latest/reference/c-function-cmd-if-shell-c-cmd_if_shell_exec/) (function)
- [`cmd_list_clients_entry`](/en/tmux/latest/reference/c-variable-cmd_list_clients_entry/) (attribute)
- [`cmd_list_clients_exec`](/en/tmux/latest/reference/c-function-cmd-list-clients-c-cmd_list_clients_exec/) (function)

## Guides

Pages that discuss `fetch`.

- [Typed queries](/en/haskell/latest/guides/query/)
