brkyvz commented on a change in pull request #28027: URL: https://github.com/apache/spark/pull/28027#discussion_r512996706
########## File path: sql/catalyst/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DataSourceV2Relation.scala ########## @@ -48,6 +48,15 @@ case class DataSourceV2Relation( import DataSourceV2Implicits._ + override lazy val metadataOutput: Seq[AttributeReference] = table match { + case hasMeta: SupportsMetadataColumns => + val attrs = hasMeta.metadataColumns + val outputNames = outputSet.map(_.name).toSet + attrs.filterNot(col => outputNames.contains(col.name)).toAttributes Review comment: what if we don't have the structs, but just have to use this UDF to access a metadata column? So you can do: ``` select id, source_metadata(file) ``` this would avoid name collisions and explicitly tells you which functions need to be resolved. You can also return better error messages and things knowing that the column you tried to resolve was a metadata column or a column. I believe other systems like Oracle didn't have a function for pseudocolumns, therefore I'm also fine with this. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org