1.51.0 - 2026-07-06
Added
- Dbt: Capture dbt model meta/config values
#4653@mobuchowski Capture per-modelconfigvalues (e.g.materialized,access,owner,group) and the user-definedmetamap from the dbt manifest into a newdbt_modeldataset facet, attached in both the legacy/local and structured-logs dbt processors. - Spark: Add support for open source Unity Catalog (Spark 4.0)
#3674@arturowczarek Add a catalog handler for the open source Unity Catalog'sUCSingleCatalogSpark catalog so output dataset facets are produced when using OSS Unity Catalog, which cannot reuse the existingDeltaHandlerimplementation. - Spec: Extend jobTypeJobFacet to capture event emission lifecycle
#4592@jakub-moravec Extend the Job Type facet so producers, particularly streaming producers that emit a single event covering a time period rather than START/RUNNING/COMPLETE events, can document the lifecycle of the OpenLineage events consumers should expect.
Fixed
- Spark: Fix missing output lineage for insertInto with append mode
#4676@mishrasangeeta87 Fix a bug wheredf.write.mode("append").insertInto(table)did not emit an output dataset, by extracting the target table directly from theAppendDatalogical plan, aligning append-mode handling with overwrite-mode. - Spark: Fix Unity Catalog symlink metadata on Databricks
#4660@mishrasangeeta87 Build Databricks Unity Catalog table symlinks using the fully qualified table name and aunity-catalognamespace instead of one derived from the underlying storage path, giving lineage consumers stable, catalog-qualified identifiers. - Client/Java: Change shaded paths to avoid conflicts when using composite transport
#4652@tnazarew Relocate shaded classes per-transport (e.g.io.openlineage.client.transports.gcs.shaded.x) instead of to a single shared shaded package, fixing Google library version conflicts when combininggcsandgcplineagetransports in a composite transport. - Client/Java: Normalize abfs/wasb to abfss/wasbs in ObjectStorageDatasetExtractor
#4661@arturowczarek Treatabfs://andwasb://URIs the same as their TLS variants (abfss/wasbs) when deriving the object-storage namespace, since they point at the same underlying files and only differ in transport. - Client/Java: Stop swallowing actual cause when using CompositeTransport
#4666@mobuchowski Preserve the underlying exception instead of only its message when aCompositeTransportemit fails, so the real cause is visible instead of being lost. - Common: Handle trailing command options
#4624@hcthakur2004 Avoid indexing past the end of command-line arguments when a trailing option has no value. - Common: Preserve nullable chain input
#4627@hcthakur2004 Avoid mutating the caller-provided chain inget_from_nullable_chain, keeping it reusable after lookup. - GreatExpectations: Preserve datasource URL ports
#4679@hcthakur2004 Preserve the port on a datasource URL when Great Expectations strips credentials from it. - Python: Isolate Datadog config defaults
#4586@hcthakur2004 Replace shared, mutable Datadog config dictionary defaults with per-instance factories so retry and async transport rule defaults aren't accidentally shared across instances. - Python: Support file URI transport paths
#4656@hcthakur2004 Normalize localfile://URIs before opening file transport paths so events can be appended through afile://log path. - Spark: Fix Iceberg handler detection to probe SparkCatalog instead of Catalog
#4665@arturowczarek Detect Iceberg by the presence of theiceberg-sparkSparkCatalogclass rather thaniceberg-core'sCatalog, so the Iceberg handler no longer activates in environments whereiceberg-coreis on the classpath withouticeberg-spark.