Seam isolating the few genuinely dialect-specific SQL behaviors so a new database dialect is a drop-in module + one config line, not a core refactor. Only Postgres ships today (the Ecto reference adapter).
Resolve the configured dialect module (default Postgres).
@callback explain_sql(String.t()) :: String.t()
@callback normalize_extras(String.t()) :: String.t()
@callback parse_plan(term()) :: map() | nil