@@ -90,9 +90,8 @@ class DeltaDataSource
90
90
91
91
val (_, snapshot) = DeltaLog .forTableWithSnapshot(sqlContext.sparkSession, path)
92
92
val readSchema = {
93
- getSchemaLogForDeltaSource(sqlContext.sparkSession, snapshot, parameters)
94
- // Use `getSchemaAtLogInit` so it's always consistent between analysis and execution phase
95
- .flatMap(_.getSchemaAtLogInit.map(_.dataSchema))
93
+ getSchemaTrackingLogForDeltaSource(sqlContext.sparkSession, snapshot, parameters)
94
+ .flatMap(_.getCurrentTrackedSchema.map(_.dataSchema))
96
95
.getOrElse(snapshot.schema)
97
96
}
98
97
@@ -122,10 +121,12 @@ class DeltaDataSource
122
121
})
123
122
val options = new DeltaOptions (parameters, sqlContext.sparkSession.sessionState.conf)
124
123
val (deltaLog, snapshot) = DeltaLog .forTableWithSnapshot(sqlContext.sparkSession, path)
125
- val schemaLogOpt =
126
- getSchemaLogForDeltaSource(sqlContext.sparkSession, snapshot, parameters)
127
- val readSchema = schemaLogOpt
128
- .flatMap(_.getSchemaAtLogInit.map(_.dataSchema))
124
+
125
+ val schemaTrackingLogOpt =
126
+ getSchemaTrackingLogForDeltaSource(sqlContext.sparkSession, snapshot, parameters)
127
+
128
+ val readSchema = schemaTrackingLogOpt
129
+ .flatMap(_.getCurrentTrackedSchema.map(_.dataSchema))
129
130
.getOrElse(snapshot.schema)
130
131
131
132
if (readSchema.isEmpty) {
@@ -136,7 +137,7 @@ class DeltaDataSource
136
137
deltaLog,
137
138
options,
138
139
snapshot,
139
- schemaLog = schemaLogOpt
140
+ schemaTrackingLog = schemaTrackingLogOpt
140
141
)
141
142
}
142
143
@@ -237,14 +238,26 @@ class DeltaDataSource
237
238
/**
238
239
* Create a schema log for Delta streaming source if possible
239
240
*/
240
- private def getSchemaLogForDeltaSource (
241
+ private def getSchemaTrackingLogForDeltaSource (
241
242
spark : SparkSession ,
242
243
sourceSnapshot : Snapshot ,
243
- parameters : Map [String , String ]): Option [DeltaSourceSchemaLog ] = {
244
+ parameters : Map [String , String ]): Option [DeltaSourceSchemaTrackingLog ] = {
244
245
val options = new CaseInsensitiveStringMap (parameters.asJava)
245
246
Option (options.get(DeltaOptions .SCHEMA_TRACKING_LOCATION ))
247
+ .orElse(Option (options.get(DeltaOptions .SCHEMA_TRACKING_LOCATION_ALIAS )))
246
248
.map { schemaTrackingLocation =>
247
- DeltaSourceSchemaLog .create(
249
+ if (! spark.sessionState.conf.getConf(
250
+ DeltaSQLConf .DELTA_STREAMING_ENABLE_NON_ADDITIVE_SCHEMA_EVOLUTION )) {
251
+ // TODO: remove once non-additive schema evolution is released
252
+ throw new UnsupportedOperationException (
253
+ " Schema tracking location is not supported for Delta streaming source" )
254
+ }
255
+ if (Option (options.get(DeltaOptions .CDC_READ_OPTION )).exists(_.toBoolean)) {
256
+ // TODO: remove once we support CDC streaming with schema log
257
+ throw new UnsupportedOperationException (
258
+ " Reading change data feed and streaming is not supported with schema tracking log" )
259
+ }
260
+ DeltaSourceSchemaTrackingLog .create(
248
261
spark, schemaTrackingLocation, sourceSnapshot,
249
262
Option (options.get(DeltaOptions .STREAMING_SOURCE_TRACKING_ID )))
250
263
}
0 commit comments