Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
8a5ce1c
Feat: Add Apache Doris engine adapter with OLAP and Iceberg multi-cat…
brucearctor Oct 18, 2026
8eeba87
refactor(doris): scope sync MV USE db, unify _to_sql, and document Do…
brucearctor Oct 19, 2026
51c61e2
refactor(doris): extract static helpers and prefer docker exec in wai…
brucearctor Oct 19, 2026
af3a80b
fix(doris): fix wait-for-db FE config, normalize Identifier merge key…
brucearctor Oct 19, 2026
d03b3d9
chore(ci): optimize doris docker startup and memory footprint in ci
brucearctor Oct 19, 2026
d611e07
Merge branch 'main' into feat/doris-engine-adapter
brucearctor Oct 20, 2026
3c58131
fix(doris): address review feedback on create_view, reconnect retry, …
brucearctor Oct 21, 2026
a3b2d77
fix(doris): harden reconnect retry against timeouts and validate MV b…
brucearctor Oct 21, 2026
d54cd01
fix(doris): harden AST parsing, MTMV metadata, key validation, and docs
brucearctor Oct 21, 2026
55370e5
Merge branch 'main' into feat/doris-engine-adapter
brucearctor Oct 21, 2026
1b8fffb
fix(doris): support case-insensitive key matching and validate order_by
brucearctor Oct 21, 2026
c874f44
fix(doris): reorder unannotated CTAS key projections and validate dis…
brucearctor Oct 21, 2026
f45ee2b
fix(doris): disable MV recreation on evaluation and resolve table ref…
brucearctor Oct 21, 2026
c5bdff7
fix(doris): fix MODEL physical_properties parsing, UDT key check, and…
brucearctor Oct 22, 2026
eed2be1
fix(doris): validate refresh_trigger and document MV physical table r…
brucearctor Oct 22, 2026
3d575a5
fix(doris): harden key/partition/delete invariants and expand unit + …
brucearctor Oct 22, 2026
6fe3f5f
fix(doris): harden DataFrame/seed key coercion, Iceberg bucket/trunca…
brucearctor Oct 22, 2026
33c908e
fix(doris): resolve CTAS key coercion, self-ref replace, Iceberg CTAS…
brucearctor Oct 22, 2026
b32787e
feat(doris): strip FOR UPDATE locks, guard composite create_index, an…
brucearctor Oct 22, 2026
ecdd4c4
fix(doris): support OR key deletes, bare boolean conjuncts, and OLAP …
brucearctor Oct 22, 2026
f187846
feat(doris): support unannotated view column comments and StarRocks p…
brucearctor Oct 23, 2026
32310c9
fix(doris): handle IS TRUE/FALSE, negative OR keys, UNION deletes, an…
brucearctor Oct 23, 2026
eb1ad0f
docs(doris): document StarRocks and dbt-doris physical_properties ali…
brucearctor Oct 23, 2026
f40cbb3
fix(doris): support table_type/keys, random dist flag, MV exists, and…
brucearctor Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/scripts/install-prerequisites.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ elif [ "$ENGINE" == "fabric" ]; then
rm packages-microsoft-prod.deb

ENGINE_DEPENDENCIES="msodbcsql18"
elif [ "$ENGINE" == "doris" ]; then
sudo sysctl -w vm.max_map_count=2000000
fi

ALL_DEPENDENCIES="$COMMON_DEPENDENCIES $ENGINE_DEPENDENCIES"
Expand Down
40 changes: 40 additions & 0 deletions .github/scripts/wait-for-db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,46 @@ db2_ready() {
done
}

doris_ready() {
probe_port 9030

echo "Waiting for Doris FE to accept SQL connections..."
while true; do
if docker exec -i doris-fe mysql -h127.0.0.1 -P9030 -uroot -e "SHOW FRONTENDS\G" 2>/dev/null | grep -q "Alive: true"; then
echo "Doris FE is alive"
break
fi
sleep 2
done

docker exec -i doris-fe mysql -h127.0.0.1 -P9030 -uroot -e "ALTER SYSTEM ADD BACKEND '172.30.80.3:9050';" 2>/dev/null || true

echo "Checking for 1 alive Doris backends..."
while true; do
echo "Checking Doris backends..."
ALIVE_BACKENDS=$(docker exec -i doris-fe mysql -h127.0.0.1 -P9030 -uroot -e "show backends \G" 2>/dev/null | grep -c "^ *Alive: true *$" || true)

# fallback value if failed to get number
if ! [[ "$ALIVE_BACKENDS" =~ ^[0-9]+$ ]]; then
echo "WARN: Unable to parse number of alive backends, got: '$ALIVE_BACKENDS'"
ALIVE_BACKENDS=0
fi

echo "Found $ALIVE_BACKENDS alive backends"

if [ "$ALIVE_BACKENDS" -ge 1 ]; then
echo "Doris has 1 or more alive backends"
break
fi

echo "Waiting for more backends to become alive..."
sleep 3
done

# set default replication num to 1 (there is only one be in the docker compose file)
docker exec -i doris-fe mysql -h127.0.0.1 -P9030 -uroot -e "ADMIN SET FRONTEND CONFIG ('force_olap_table_replication_num' = '1');"
}

echo "Waiting for $ENGINE to be ready..."

READINESS_FUNC="${ENGINE}_ready"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ jobs:
clickhouse,
risingwave,
starrocks,
doris,
]
env:
PYTEST_XDIST_AUTO_NUM_WORKERS: 2
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ build:
python: "3.10"
jobs:
pre_build:
- pip install -e ".[athena,azuresql,bigframes,bigquery,clickhouse,databricks,dbt,dlt,gcppostgres,github,llm,mssql,mysql,mwaa,postgres,redshift,slack,snowflake,starrocks,trino,web,risingwave]"
- pip install -e ".[athena,azuresql,bigframes,bigquery,clickhouse,databricks,dbt,dlt,doris,gcppostgres,github,llm,mssql,mysql,mwaa,postgres,redshift,slack,snowflake,starrocks,trino,web,risingwave]"
- make api-docs

mkdocs:
Expand Down
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,9 @@ starrocks-test: engine-starrocks-up
db2-test: engine-db2-up
pytest -n auto -m "db2" --reruns 3 --junitxml=test-results/junit-db2.xml

doris-test: engine-doris-up
pytest -n auto -m "doris" --reruns 3 --junitxml=test-results/junit-doris.xml

#################
# Cloud Engines #
#################
Expand Down
1 change: 1 addition & 0 deletions docs/concepts/models/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ This table lists each engine's support for `TABLE` and `VIEW` object comments:
| BigQuery | Y | Y |
| ClickHouse | Y | Y |
| Databricks | Y | Y |
| Doris | Y | Y |
| DuckDB <=0.9 | N | N |
| DuckDB >=0.10 | Y | Y |
| MySQL | Y | Y |
Expand Down
2 changes: 2 additions & 0 deletions docs/guides/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,7 @@ These pages describe the connection configuration options for each execution eng
* [BigQuery](../integrations/engines/bigquery.md)
* [ClickHouse](../integrations/engines/clickhouse.md)
* [Databricks](../integrations/engines/databricks.md)
* [Doris](../integrations/engines/doris.md)
* [DuckDB](../integrations/engines/duckdb.md)
* [Fabric](../integrations/engines/fabric.md)
* [MotherDuck](../integrations/engines/motherduck.md)
Expand Down Expand Up @@ -975,6 +976,7 @@ Other state engines with fast and reliable database transactions (less tested th
Unsupported state engines, even for development:

* [ClickHouse](../integrations/engines/clickhouse.md)
* [Doris](../integrations/engines/doris.md)
* [Spark](../integrations/engines/spark.md)
* [StarRocks](../integrations/engines/starrocks.md)
* [Trino](../integrations/engines/trino.md)
Expand Down
1 change: 1 addition & 0 deletions docs/guides/connections.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ default_gateway: local_db
* [ClickHouse](../integrations/engines/clickhouse.md)
* [Databricks](../integrations/engines/databricks.md)
* [Db2](../integrations/engines/db2.md)
* [Doris](../integrations/engines/doris.md)
* [DuckDB](../integrations/engines/duckdb.md)
* [Fabric](../integrations/engines/fabric.md)
* [MotherDuck](../integrations/engines/motherduck.md)
Expand Down
1 change: 1 addition & 0 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Other extras are required to use specific SQL engines, like Bigquery or Postgres
| Bigquery | `pip install "sqlmesh[bigquery]"` |
| ClickHouse | `pip install "sqlmesh[clickhouse]"` |
| Databricks | `pip install "sqlmesh[databricks]"` |
| Doris | `pip install "sqlmesh[doris]"` |
| Fabric | `pip install "sqlmesh[fabric]"` |
| GCP Postgres | `pip install "sqlmesh[gcppostgres]"` |
| MS SQL Server | `pip install "sqlmesh[mssql]"` |
Expand Down
Loading