Preserve connector source runtime evidence

This commit is contained in:
2026-08-04 12:05:35 +02:00
parent 2d93ad07d2
commit 067c8273b6
8 changed files with 202 additions and 4 deletions
+43 -1
View File
@@ -665,7 +665,7 @@ class SqlDatasourceProvider:
"origin_provider": origin.provider,
"registered_at": utcnow().isoformat(),
},
metadata_=dict(origin.metadata),
metadata_=_origin_metadata(origin),
created_by=_actor_id(api_principal),
updated_by=_actor_id(api_principal),
)
@@ -856,6 +856,8 @@ class SqlDatasourceProvider:
offset=offset,
columns=columns,
expected_fingerprint=request.expected_fingerprint,
max_bytes=request.max_bytes,
timeout_ms=request.timeout_ms,
),
)
except DatasourceError:
@@ -872,12 +874,19 @@ class SqlDatasourceProvider:
row_count=result.origin.row_count,
byte_count=result.origin.byte_count,
updated_at=result.origin.updated_at,
metadata=_origin_metadata(result.origin, current=item.metadata_),
)
return DatasourceReadResult(
datasource=descriptor,
rows=result.rows,
total_rows=result.total_rows,
truncated=result.truncated,
returned_bytes=result.returned_bytes,
elapsed_ms=result.elapsed_ms,
effective_row_limit=result.effective_row_limit,
effective_byte_limit=result.effective_byte_limit,
effective_timeout_ms=result.effective_timeout_ms,
diagnostics=result.diagnostics,
)
def _required_origin(
@@ -964,6 +973,7 @@ class SqlDatasourceProvider:
frozen_label: str | None = None,
set_current: bool,
) -> DatasourceMaterializationRecord:
item.metadata_ = _origin_metadata(origin, current=item.metadata_)
normalized = normalize_rows(rows)
schema = infer_schema(normalized) or origin.schema
fingerprint = fingerprint_rows(normalized, schema)
@@ -992,6 +1002,38 @@ class SqlDatasourceProvider:
)
def _origin_metadata(
origin: DatasourceOrigin,
*,
current: Mapping[str, object] | None = None,
) -> dict[str, object]:
return {
**dict(current or {}),
**dict(origin.metadata),
"source_contract": {
"source_mode": origin.source_mode,
"pushdown": {
"projections": origin.pushdown.projections,
"pagination": origin.pushdown.pagination,
"filters": list(origin.pushdown.filters),
"aggregations": list(origin.pushdown.aggregations),
"sorting": list(origin.pushdown.sorting),
},
"health": {
"status": origin.health.status,
"code": origin.health.code,
"summary": origin.health.summary,
"checked_at": (
origin.health.checked_at.isoformat()
if origin.health.checked_at
else None
),
"details": dict(origin.health.details),
},
},
}
def _append_materialization(
session: Session,
*,