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