thomasrebele commented on code in PR #6103:
URL: https://github.com/apache/hive/pull/6103#discussion_r2425515311


##########
ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java:
##########
@@ -4918,15 +4919,12 @@ private RelNode genLogicalPlan(QB qb, boolean 
outerMostQB,
 
         aliasToRel.put(subqAlias, relNode);
         if (qb.getViewToTabSchema().containsKey(subqAlias)) {
-          if (relNode instanceof HiveProject) {
-            if (this.viewProjectToTableSchema == null) {
-              this.viewProjectToTableSchema = new LinkedHashMap<>();
-            }
-            viewProjectToTableSchema.put((HiveProject) relNode, 
qb.getViewToTabSchema().get(subqAlias));
-          } else {
-            throw new SemanticException("View " + subqAlias + " is 
corresponding to "
-                + relNode.toString() + ", rather than a HiveProject.");
+          HiveProject project = extractFirstProject(relNode)

Review Comment:
   The viewToProjectTableSchema has been introduced in 
[HIVE-13095](https://issues.apache.org/jira/browse/HIVE-13095) to determine 
whether a user has the permission to access fields of a view. There's a comment 
in https://reviews.apache.org/r/43834/.
   
   It could work if we expand the logic to all kinds of RelNodes. The code in 
[trimFields(Project, 
...)](https://github.com/apache/hive/blob/4f7140f0b324b5f2abde10acb671fd1f2ced9517/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelFieldTrimmer.java#L740)
 does not really use the project. The code could be applied to any kind of 
RelNode. The code would then work even if no project could be found (e.g., if 
the top level node is a join or union). The cost: adding a call to each of the 
`trimFields` methods.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to