Stacked on feat/testcontainers-more-dialects. All four extras already
existed in pyproject.toml, so this only wires up tests -- no new
optional-dependency groups needed.
- postgres/mysql: straight copies of the timescaledb/mariadb pattern
respectively, pointed at vanilla images instead of a fork/extension.
- clickhouse: connects over the container's HTTP port (8123), matching
clickhouse-connect (Superset's driver), not the native TCP port (9000)
the container's own docstring example uses. ClickHouse has no real
primary-key concept and clickhouse-connect's DDL compiler rejects
CREATE TABLE without an explicit engine, so _pagination.py gained an
optional extra_table_args hook to pass MergeTree(order_by=...). Also
works around a pre-existing quirk in db_engine_specs/clickhouse.py:
its module-level type-formatting setup dereferences current_app.config,
so importing it outside a Flask app context raises RuntimeError --
tests/unit_tests/db_engine_specs/test_clickhouse.py already works
around this with per-test local imports, but that suite also benefits
from an autouse app_context fixture this suite doesn't have, so this
test pushes one explicitly around the one-time import.
- starrocks: no dedicated testcontainers module, so a generic
DockerContainer against the official allin1-ubuntu image (FE+BE in one
container). Not verified locally (multiple-GB image, skipped to keep
local Docker load low per session guidance); the fixture retries its
first connection since the query port can accept TCP before StarRocks'
query engine is fully initialized.