@@ -1261,16 +1261,29 @@ class Analyzer(override val catalogManager: CatalogManager) extends RuleExecutor
1261
1261
expandIdentifier(u.multipartIdentifier) match {
1262
1262
case CatalogAndIdentifier (catalog, ident) =>
1263
1263
val key = ((catalog.name +: ident.namespace :+ ident.name).toSeq, timeTravelSpec)
1264
- AnalysisContext .get.relationCache.get(key).map(_.transform {
1265
- case multi : MultiInstanceRelation =>
1266
- val newRelation = multi.newInstance()
1267
- newRelation.copyTagsFrom(multi)
1268
- newRelation
1269
- }).orElse {
1264
+ AnalysisContext .get.relationCache.get(key).map { cache =>
1265
+ val cachedRelation = cache.transform {
1266
+ case multi : MultiInstanceRelation =>
1267
+ val newRelation = multi.newInstance()
1268
+ newRelation.copyTagsFrom(multi)
1269
+ newRelation
1270
+ }
1271
+ u.getTagValue(LogicalPlan .PLAN_ID_TAG ).map { planId =>
1272
+ val cachedConnectRelation = cachedRelation.clone()
1273
+ cachedConnectRelation.setTagValue(LogicalPlan .PLAN_ID_TAG , planId)
1274
+ cachedConnectRelation
1275
+ }.getOrElse(cachedRelation)
1276
+ }.orElse {
1270
1277
val table = CatalogV2Util .loadTable(catalog, ident, timeTravelSpec)
1271
1278
val loaded = createRelation(catalog, ident, table, u.options, u.isStreaming)
1272
1279
loaded.foreach(AnalysisContext .get.relationCache.update(key, _))
1273
- loaded
1280
+ u.getTagValue(LogicalPlan .PLAN_ID_TAG ).map { planId =>
1281
+ loaded.map { loadedRelation =>
1282
+ val loadedConnectRelation = loadedRelation.clone()
1283
+ loadedConnectRelation.setTagValue(LogicalPlan .PLAN_ID_TAG , planId)
1284
+ loadedConnectRelation
1285
+ }
1286
+ }.getOrElse(loaded)
1274
1287
}
1275
1288
case _ => None
1276
1289
}
0 commit comments