Preserve connector source runtime evidence
This commit is contained in:
@@ -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,
|
||||
*,
|
||||
|
||||
Reference in New Issue
Block a user