@@ -56,23 +56,25 @@ private[sql] class HiveSessionCatalog(
5656 hadoopConf) {
5757
5858 override def lookupRelation (name : TableIdentifier , alias : Option [String ]): LogicalPlan = {
59- val table = formatTableName(name.table)
60- val db = formatDatabaseName(name.database.getOrElse(currentDb))
61- if (db == globalTempViewManager.database) {
62- val relationAlias = alias.getOrElse(table)
63- globalTempViewManager.get(table).map { viewDef =>
64- SubqueryAlias (relationAlias, viewDef, Some (name))
65- }.getOrElse(throw new NoSuchTableException (db, table))
66- } else if (name.database.isDefined || ! tempTables.contains(table)) {
67- val database = name.database.map(formatDatabaseName)
68- val newName = name.copy(database = database, table = table)
69- metastoreCatalog.lookupRelation(newName, alias)
70- } else {
71- val relation = tempTables(table)
72- val tableWithQualifiers = SubqueryAlias (table, relation, None )
73- // If an alias was specified by the lookup, wrap the plan in a subquery so that
74- // attributes are properly qualified with this alias.
75- alias.map(a => SubqueryAlias (a, tableWithQualifiers, None )).getOrElse(tableWithQualifiers)
59+ synchronized {
60+ val table = formatTableName(name.table)
61+ val db = formatDatabaseName(name.database.getOrElse(currentDb))
62+ if (db == globalTempViewManager.database) {
63+ val relationAlias = alias.getOrElse(table)
64+ globalTempViewManager.get(table).map { viewDef =>
65+ SubqueryAlias (relationAlias, viewDef, Some (name))
66+ }.getOrElse(throw new NoSuchTableException (db, table))
67+ } else if (name.database.isDefined || ! tempTables.contains(table)) {
68+ val database = name.database.map(formatDatabaseName)
69+ val newName = name.copy(database = database, table = table)
70+ metastoreCatalog.lookupRelation(newName, alias)
71+ } else {
72+ val relation = tempTables(table)
73+ val tableWithQualifiers = SubqueryAlias (table, relation, None )
74+ // If an alias was specified by the lookup, wrap the plan in a subquery so that
75+ // attributes are properly qualified with this alias.
76+ alias.map(a => SubqueryAlias (a, tableWithQualifiers, None )).getOrElse(tableWithQualifiers)
77+ }
7678 }
7779 }
7880
0 commit comments