Package org.apache.druid.frame.key
Class FrameComparisonWidgetImpl
- java.lang.Object
-
- org.apache.druid.frame.key.FrameComparisonWidgetImpl
-
- All Implemented Interfaces:
FrameComparisonWidget
public class FrameComparisonWidgetImpl extends Object implements FrameComparisonWidget
Implementation ofFrameComparisonWidget
for pairs ofFrameType.ROW_BASED
frames. Comparison logic in this class is very similar toRowKeyComparator
, but is different because it works on Frames instead of byte[].
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compare(int row, FrameComparisonWidget otherWidget, int otherRow)
Compare a specific row of this frame to a specific row of another frame.int
compare(int row, RowKey key)
Compare a specific row of this frame to the provided key.static FrameComparisonWidgetImpl
create(Frame frame, RowSignature signature, List<KeyColumn> keyColumns, List<FieldReader> keyColumnReaders)
Create aFrameComparisonWidget
for the given frame.boolean
isCompletelyNonNullKey(int row)
Whether a particular row has no null fields in its comparison key.RowKey
readKey(int row)
Returns theRowKey
corresponding to a particular row.
-
-
-
Method Detail
-
create
public static FrameComparisonWidgetImpl create(Frame frame, RowSignature signature, List<KeyColumn> keyColumns, List<FieldReader> keyColumnReaders)
Create aFrameComparisonWidget
for the given frame. Only possible for frames of typeFrameType.ROW_BASED
. The provided keyColumns must be a prefix ofFrameReader.signature()
.- Parameters:
frame
- frame, must beFrameType.ROW_BASED
signature
- signature for the framekeyColumns
- columns to sort bykeyColumnReaders
- readers for key columns
-
readKey
public RowKey readKey(int row)
Description copied from interface:FrameComparisonWidget
Returns theRowKey
corresponding to a particular row. The returned key is a copy that does not reference memory of the underlyingFrame
.- Specified by:
readKey
in interfaceFrameComparisonWidget
-
isCompletelyNonNullKey
public boolean isCompletelyNonNullKey(int row)
Description copied from interface:FrameComparisonWidget
Whether a particular row has no null fields in its comparison key. WhenNullHandling.replaceWithDefault()
, default values (like empty strings and numeric zeroes) are considered null for purposes of this method. This behavior is inherited fromFieldReader.isNull(Memory, long)
and enables join code to behave similarly in MSQ and native queries.- Specified by:
isCompletelyNonNullKey
in interfaceFrameComparisonWidget
-
compare
public int compare(int row, RowKey key)
Description copied from interface:FrameComparisonWidget
Compare a specific row of this frame to the provided key. The key must have been created with sortColumns that match the ones used to create this widget, or else results are undefined.- Specified by:
compare
in interfaceFrameComparisonWidget
-
compare
public int compare(int row, FrameComparisonWidget otherWidget, int otherRow)
Description copied from interface:FrameComparisonWidget
Compare a specific row of this frame to a specific row of another frame. The other frame must have the same sort key, or else results are undefined. The other frame may be the same object as this frame; for example, this is used byFrameSort
to sort frames in-place.- Specified by:
compare
in interfaceFrameComparisonWidget
-
-