# clickhouse_adapter_ecto v0.1.0 - Table of Contents

> An Ecto adapter for ClickHouse that speaks its native TCP protocol.

## Modules

- [Ecto.Adapters.ClickHouse](Ecto.Adapters.ClickHouse.md): A minimal `Ecto.Adapters.SQL`-based adapter for ClickHouse, backed by
`ChDriver` (a native-protocol `DBConnection` driver).
- [Ecto.Adapters.ClickHouse.Connection](Ecto.Adapters.ClickHouse.Connection.md): Implements `Ecto.Adapters.SQL.Connection` on top of `ChDriver`.
- [Ecto.Adapters.ClickHouse.DDL](Ecto.Adapters.ClickHouse.DDL.md): DDL generation for `Ecto.Migration` support.
- [Ecto.Adapters.ClickHouse.Expression](Ecto.Adapters.ClickHouse.Expression.md): Clause and expression renderers used by `Ecto.Adapters.ClickHouse.QueryBuilder`
to build SELECT statements: `SELECT`, `FROM`, `WHERE`, `ORDER BY`,
`LIMIT`/`OFFSET`, boolean composition, and the `expr/3` Ecto expression
renderer (with its many clauses covering literals, functions, operators,
and fragments). This is the file that grows every time a new Ecto
fragment or operator is supported, so it stays focused purely on that.

- [Ecto.Adapters.ClickHouse.Migration](Ecto.Adapters.ClickHouse.Migration.md): Validated builders for ClickHouse-specific migration column types that
have no direct `Ecto.Migration.add/3` equivalent.
- [Ecto.Adapters.ClickHouse.Naming](Ecto.Adapters.ClickHouse.Naming.md): Quoting -- double quotes are
accepted for identifiers (`SELECT "id" FROM "events"`); backticks work
too, but double quotes are the ANSI-standard choice and match what the
rest of the Ecto ecosystem (Postgres) expects, so that's what's used
here. Single quotes remain reserved for string literals.
- [Ecto.Adapters.ClickHouse.QueryBuilder](Ecto.Adapters.ClickHouse.QueryBuilder.md): Statement generators for `Ecto.Adapters.SQL.Connection`: `all/2`,
`update_all/2`, `delete_all/1`, `insert/8`, `update/5`, `delete/5`, and
`explain_query/4`. These change for entirely different reasons than the
expression/clause rendering in `Ecto.Adapters.ClickHouse.Expression` --
e.g. adding an `expr/3` clause for a new Ecto fragment has nothing to do
with `insert/8`'s on-conflict handling -- so they're kept apart.

- [Ecto.Adapters.ClickHouse.Types.FixedString](Ecto.Adapters.ClickHouse.Types.FixedString.md): An `Ecto.ParameterizedType` for ClickHouse's `FixedString(N)` column type.

