Skip to content

Commit b900177

Browse files
CodeGeneratorWithInterpretedFallbacks and UnsafeProjection
1 parent cfbde04 commit b900177

File tree

2 files changed

+65
-27
lines changed

2 files changed

+65
-27
lines changed
Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,70 @@
1-
# CodeGeneratorWithInterpretedFallback Generators
1+
---
2+
title: CodeGeneratorWithInterpretedFallback
3+
---
24

3-
`CodeGeneratorWithInterpretedFallback` is an [abstraction](#contract) of [codegen object generators](#implementations) that can create objects for [codegen](#createCodeGeneratedObject) and [interpreted](#createInterpretedObject) evaluation paths.
5+
# CodeGeneratorWithInterpretedFallback Generators
46

5-
## Type Constructor
7+
`CodeGeneratorWithInterpretedFallback` is an [abstraction](#contract) of [codegen object generators](#implementations) that can [create `OUT` objects](#createObject) for [codegen](#createCodeGeneratedObject) and [interpreted](#createInterpretedObject) evaluation paths.
68

79
`CodeGeneratorWithInterpretedFallback` is a Scala type constructor (_generic class_) with `IN` and `OUT` type aliases.
810

911
```scala
1012
CodeGeneratorWithInterpretedFallback[IN, OUT]
1113
```
1214

15+
CodeGeneratorWithInterpretedFallback | IN | OUT
16+
-------------------------------------|----|----
17+
[RowOrdering](RowOrdering.md) | [SortOrder](SortOrder.md)s (`Seq[SortOrder]`) | `BaseOrdering`
18+
[Predicate](Predicate.md) | [Expression](Expression.md) | `BasePredicate`
19+
[MutableProjection](MutableProjection.md) | [Expression](Expression.md)s (`Seq[Expression]`) | [MutableProjection](MutableProjection.md)
20+
[UnsafeProjection](UnsafeProjection.md) | [Expression](Expression.md)s (`Seq[Expression]`) | [UnsafeProjection](UnsafeProjection.md)
21+
`SafeProjection` | [Expression](Expression.md)s (`Seq[Expression]`) | [Projection](Projection.md)
22+
1323
## Contract
1424

15-
### <span id="createCodeGeneratedObject"> createCodeGeneratedObject
25+
### createCodeGeneratedObject { #createCodeGeneratedObject }
1626

1727
```scala
1828
createCodeGeneratedObject(
1929
in: IN): OUT
2030
```
2131

22-
### <span id="createInterpretedObject"> createInterpretedObject
32+
See:
33+
34+
* [MutableProjection](MutableProjection.md#createCodeGeneratedObject)
35+
* [UnsafeProjection](UnsafeProjection.md#createCodeGeneratedObject)
36+
* [RowOrdering](RowOrdering.md#createCodeGeneratedObject)
37+
38+
Used when:
39+
40+
* `CodeGeneratorWithInterpretedFallback` is requested to [create an `OUT` object](#createObject)
41+
42+
### createInterpretedObject { #createInterpretedObject }
2343

2444
```scala
2545
createInterpretedObject(
2646
in: IN): OUT
2747
```
2848

49+
See:
50+
51+
* [MutableProjection](MutableProjection.md#createInterpretedObject)
52+
* [UnsafeProjection](UnsafeProjection.md#createInterpretedObject)
53+
* [RowOrdering](RowOrdering.md#createInterpretedObject)
54+
55+
Used when:
56+
57+
* `CodeGeneratorWithInterpretedFallback` is requested to [create an `OUT` object](#createObject) (after [createCodeGeneratedObject](#createCodeGeneratedObject) failed with a non-fatal exception)
58+
2959
## Implementations
3060

31-
* `MutableProjection`
61+
* [MutableProjection](MutableProjection.md)
3262
* [Predicate](Predicate.md)
3363
* [RowOrdering](RowOrdering.md)
3464
* `SafeProjection`
3565
* [UnsafeProjection](UnsafeProjection.md)
3666

37-
## <span id="createObject"> Creating Object
67+
## Creating OUT Object { #createObject }
3868

3969
```scala
4070
createObject(
@@ -49,10 +79,12 @@ In case of a non-fatal exception, `createObject` prints out the following WARN m
4979
Expr codegen error and falling back to interpreter mode
5080
```
5181

82+
---
83+
5284
`createObject` is used when:
5385

54-
* `MutableProjection` utility is used to create a `MutableProjection`
86+
* `MutableProjection` utility is used to [create a MutableProjection](MutableProjection.md#create)
5587
* `Predicate` utility is used to [create a BasePredicate](Predicate.md#create)
5688
* `RowOrdering` utility is used to [create a BaseOrdering](RowOrdering.md#create)
5789
* `SafeProjection` utility is used to create a `Projection`
58-
* `UnsafeProjection` utility is used to [create a UnsafeProjection](UnsafeProjection.md#create)
90+
* `UnsafeProjection` utility is used to [create an UnsafeProjection](UnsafeProjection.md#create)

docs/expressions/UnsafeProjection.md

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
# UnsafeProjection
22

3-
`UnsafeProjection` is an [extension](#contract) of the [Projection](Projection.md) abstraction for [expressions](#implementations) that [encode InternalRows to UnsafeRows](#apply).
3+
`UnsafeProjection` is an [extension](#contract) of the [Projection](Projection.md) abstraction for [projection functions](#implementations) from [InternalRows to (produce) UnsafeRows](#apply).
44

55
```text
6-
UnsafeProjection: InternalRow =[apply]=> UnsafeRow
6+
UnsafeProjection: InternalRow => UnsafeRow
77
```
88

9+
`UnsafeProjection` is created for [code generated](#createCodeGeneratedObject) and [interpreted](#createInterpretedObject) code evaluation paths (using [UnsafeProjection](#CodeGeneratorWithInterpretedFallback) factory object).
10+
911
## Contract
1012

11-
### <span id="apply"> Encoding InternalRow as UnsafeRow
13+
### Encoding InternalRow as UnsafeRow { #apply }
1214

1315
```scala
1416
apply(
@@ -29,29 +31,33 @@ Encodes the given [InternalRow](../InternalRow.md) to an [UnsafeRow](../UnsafeRo
2931
CodeGeneratorWithInterpretedFallback[Seq[Expression], UnsafeProjection]
3032
```
3133

32-
### <span id="createCodeGeneratedObject"> createCodeGeneratedObject
34+
### createCodeGeneratedObject { #createCodeGeneratedObject }
3335

34-
```scala
35-
createCodeGeneratedObject(
36-
in: Seq[Expression]): UnsafeProjection
37-
```
36+
??? note "CodeGeneratorWithInterpretedFallback"
3837

39-
`createCodeGeneratedObject` is part of the [CodeGeneratorWithInterpretedFallback](CodeGeneratorWithInterpretedFallback.md#createCodeGeneratedObject) abstraction.
38+
```scala
39+
createCodeGeneratedObject(
40+
in: Seq[Expression]): UnsafeProjection
41+
```
4042

41-
`createCodeGeneratedObject`...FIXME
43+
`createCodeGeneratedObject` is part of the [CodeGeneratorWithInterpretedFallback](CodeGeneratorWithInterpretedFallback.md#createCodeGeneratedObject) abstraction.
4244

43-
### <span id="createInterpretedObject"> createInterpretedObject
45+
`createCodeGeneratedObject` [generates an UnsafeProjection](../whole-stage-code-generation/GenerateUnsafeProjection.md#generate) for the given [Expression](Expression.md)s (possibly with [Subexpression Elimination](../subexpression-elimination.md) based on [spark.sql.subexpressionElimination.enabled](../configuration-properties.md#spark.sql.subexpressionElimination.enabled) configuration property).
4446

45-
```scala
46-
createInterpretedObject(
47-
in: Seq[Expression]): UnsafeProjection
48-
```
47+
### createInterpretedObject { #createInterpretedObject }
48+
49+
??? note "CodeGeneratorWithInterpretedFallback"
50+
51+
```scala
52+
createInterpretedObject(
53+
in: Seq[Expression]): UnsafeProjection
54+
```
4955

50-
`createInterpretedObject` is part of the [CodeGeneratorWithInterpretedFallback](CodeGeneratorWithInterpretedFallback.md#createInterpretedObject) abstraction.
56+
`createInterpretedObject` is part of the [CodeGeneratorWithInterpretedFallback](CodeGeneratorWithInterpretedFallback.md#createInterpretedObject) abstraction.
5157

52-
`createInterpretedObject`...FIXME
58+
`createInterpretedObject` creates an `UnsafeProjection` for the given [Expression](Expression.md)s.
5359

54-
## <span id="create"> create
60+
## Creating UnsafeProjection { #create }
5561

5662
```scala
5763
create(

0 commit comments

Comments
 (0)