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