leanken commented on a change in pull request #29389:
URL: https://github.com/apache/spark/pull/29389#discussion_r467691030



##########
File path: 
sql/core/src/main/scala/org/apache/spark/sql/execution/joins/HashedRelation.scala
##########
@@ -950,8 +950,18 @@ trait NullAwareHashedRelation extends HashedRelation with 
Externalizable {
 
 /**
  * A special HashedRelation indicates it built from a empty 
input:Iterator[InternalRow].
+ * get & getValue will return null just like
+ * empty LongHashedRelation or empty UnsafeHashedRelation does.
  */
 object EmptyHashedRelation extends NullAwareHashedRelation {
+  override def get(key: Long): Iterator[InternalRow] = null

Review comment:
       ```
   override def get(key: InternalRow): Iterator[InternalRow] = {
       val unsafeKey = key.asInstanceOf[UnsafeRow]
       val map = binaryMap  // avoid the compiler error
       val loc = new map.Location  // this could be allocated in stack
       binaryMap.safeLookup(unsafeKey.getBaseObject, unsafeKey.getBaseOffset,
         unsafeKey.getSizeInBytes, loc, unsafeKey.hashCode())
       if (loc.isDefined) {
         new Iterator[UnsafeRow] {
           private var _hasNext = true
           override def hasNext: Boolean = _hasNext
           override def next(): UnsafeRow = {
             resultRow.pointTo(loc.getValueBase, loc.getValueOffset, 
loc.getValueLength)
             _hasNext = loc.nextValue()
             resultRow
           }
         }
       } else {
         null // return null if not match
       }
     }
   
     def getValue(key: InternalRow): InternalRow = {
       val unsafeKey = key.asInstanceOf[UnsafeRow]
       val map = binaryMap  // avoid the compiler error
       val loc = new map.Location  // this could be allocated in stack
       binaryMap.safeLookup(unsafeKey.getBaseObject, unsafeKey.getBaseOffset,
         unsafeKey.getSizeInBytes, loc, unsafeKey.hashCode())
       if (loc.isDefined) {
         resultRow.pointTo(loc.getValueBase, loc.getValueOffset, 
loc.getValueLength)
         resultRow
       } else {
         null // return null if not match
       }
     }
   ```




----------------------------------------------------------------
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]



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

Reply via email to