jzhuge commented on a change in pull request #24689:
[SPARK-26946][SQL][FOLLOWUP] Handle lookupCatalog function not defined
URL: https://github.com/apache/spark/pull/24689#discussion_r287893549
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalog/v2/LookupCatalog.scala
##########
@@ -26,27 +28,31 @@ import org.apache.spark.sql.catalyst.TableIdentifier
@Experimental
trait LookupCatalog {
- def lookupCatalog: Option[(String) => CatalogPlugin] = None
+ def lookupCatalog: Option[String => CatalogPlugin] = None
type CatalogObjectIdentifier = (Option[CatalogPlugin], Identifier)
/**
* Extract catalog plugin and identifier from a multi-part identifier.
*/
object CatalogObjectIdentifier {
- def unapply(parts: Seq[String]): Option[CatalogObjectIdentifier] =
lookupCatalog.map { lookup =>
- parts match {
- case Seq(name) =>
- (None, Identifier.of(Array.empty, name))
- case Seq(catalogName, tail @ _*) =>
- try {
- val catalog = lookup(catalogName)
- (Some(catalog), Identifier.of(tail.init.toArray, tail.last))
- } catch {
- case _: CatalogNotFoundException =>
- (None, Identifier.of(parts.init.toArray, parts.last))
- }
- }
+ def unapply(parts: Seq[String]): Option[CatalogObjectIdentifier] = parts
match {
Review comment:
Ah, nice! Could not find it in
https://www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html#extractor-patterns.
Is it documented somewhere?
Tried it and IntelliJ did give warning when I attempted to return None when
the return type is Some[T]!
<img width="702" alt="Screen Shot 2019-05-27 at 4 21 23 PM"
src="https://user-images.githubusercontent.com/1883812/58441990-a2230100-809b-11e9-8395-090208232160.png">
----------------------------------------------------------------
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:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]