PostHog Handbook Library / Engineering

94 words. Estimated reading time: 1 min.

# ClickHouse Dictionaries

We don't use ClickHouse dictionaries very often, and there are a few aspects to them that have caused headaches in production.

#### Using a ClickHouse table as a source

If you don't provide a `PASSWORD` when creating a dictionary, you will likely get errors like this with calling `getDictOrNull`:

    Code: 516. DB::Exception: default: Authentication failed: password is incorrect, or there is no user with such name. If
    you have installed ClickHouse and forgot password you can reset it in the configuration file. The password for default
    user is typically located at /etc/clickhouse-server/users.d/default-password.xml and deleting this file will reset the
    password. See also /etc/clickhouse-server/users.xml on the server where ClickHouse is installed. : while executing '...'

You could provide one in the DDL, but the problem with this is that if the password is ever rotated, you will need to re-run the migration, or you'll start getting auth errors again.

Here's an example of providing this section in the DDL:

    CREATE DICTIONARY posthog.my_dict
    (
        `a` String,
        `b` String,
        `c` Nullable(String),
        `d` Nullable(String),
        `e` Nullable(String)
    )
    PRIMARY KEY a, b
    SOURCE(CLICKHOUSE(TABLE 'my_table' PASSWORD 'hunter42'))
    LIFETIME(MIN 3000 MAX 3600)
    LAYOUT(COMPLEX_KEY_HASHED())

Canonical URL: https://posthog.com/handbook/engineering/clickhouse/dictionaries

GitHub source: contents/handbook/engineering/clickhouse/dictionaries.mdx

Content hash: `e167780514983acc`