panbingkun commented on PR #48908:
URL: https://github.com/apache/spark/pull/48908#issuecomment-2548245386
- For the following cases,
```scala
withTempView("t") {
val json = """{"a":1, "b":2, "c":3}"""
val df = Seq((json, "a", "b", "c")).toDF("json", "c1", "c2", "c3")
df.createOrReplaceTempView("t")
// The field names some foldable, some non-foldable.
val df3 = sql("SELECT json_tuple(json, 'a', c2, 'c') from t")
checkAnswer(df3, Row("1", "2", "3"))
}
``
- The code generated in this version is as follows:
```java
```
- The code generated in the simplified version is as follows:
```java
/* 044 */ private void generate_doConsume_0(UTF8String generate_expr_0_0,
boolean generate_exprIsNull_0_0, UTF8String generate_expr_1_0, boolean
generate_exprIsNull_1_0) throws java.io.IOException {
/* 045 */ UTF8String generate_json_0 = null;
/* 046 */ String[] generate_fields_0 = new String[3];
/* 047 */
/* 048 */ if (generate_exprIsNull_0_0) {
/* 049 */ generate_json_0 = null;
/* 050 */ } else {
/* 051 */ generate_json_0 = generate_expr_0_0;
/* 052 */ }
/* 053 */
/* 054 */ if (false) {
/* 055 */ generate_fields_0[0] = null;
/* 056 */ } else {
/* 057 */ generate_fields_0[0] = ((UTF8String) references[2] /*
literal */).toString();
/* 058 */ }
/* 059 */
/* 060 */ if (generate_exprIsNull_1_0) {
/* 061 */ generate_fields_0[1] = null;
/* 062 */ } else {
/* 063 */ generate_fields_0[1] = generate_expr_1_0.toString();
/* 064 */ }
/* 065 */
/* 066 */ if (false) {
/* 067 */ generate_fields_0[2] = null;
/* 068 */ } else {
/* 069 */ generate_fields_0[2] = ((UTF8String) references[3] /*
literal */).toString();
/* 070 */ }
/* 071 */
/* 072 */ boolean generate_isNull_2 = false;
/* 073 */ scala.collection.IterableOnce<InternalRow> generate_value_2 =
((org.apache.spark.sql.catalyst.expressions.json.JsonTupleEvaluator)
references[1] /* evaluator */).evaluate(generate_json_0, generate_fields_0);
/* 074 */ scala.collection.Iterator<InternalRow> generate_iterator_0 =
generate_value_2.iterator();
/* 075 */ while (generate_iterator_0.hasNext()) {
/* 076 */ ((org.apache.spark.sql.execution.metric.SQLMetric)
references[4] /* numOutputRows */).add(1);
/* 077 */ InternalRow generate_row_0 =
(InternalRow)(generate_iterator_0.next());
/* 078 */
/* 079 */ boolean generate_isNull_7 = generate_row_0.isNullAt(0);
/* 080 */ UTF8String generate_st_col0_0 = generate_isNull_7 ? null :
generate_row_0.getUTF8String(0);
/* 081 */ boolean generate_isNull_8 = generate_row_0.isNullAt(1);
/* 082 */ UTF8String generate_st_col1_0 = generate_isNull_8 ? null :
generate_row_0.getUTF8String(1);
/* 083 */ boolean generate_isNull_9 = generate_row_0.isNullAt(2);
/* 084 */ UTF8String generate_st_col2_0 = generate_isNull_9 ? null :
generate_row_0.getUTF8String(2);
/* 085 */ project_mutableStateArray_0[2].reset();
/* 086 */
/* 087 */ project_mutableStateArray_0[2].zeroOutNullBytes();
/* 088 */
/* 089 */ if (generate_isNull_7) {
/* 090 */ project_mutableStateArray_0[2].setNullAt(0);
/* 091 */ } else {
/* 092 */ project_mutableStateArray_0[2].write(0,
generate_st_col0_0);
/* 093 */ }
/* 094 */
/* 095 */ if (generate_isNull_8) {
/* 096 */ project_mutableStateArray_0[2].setNullAt(1);
/* 097 */ } else {
/* 098 */ project_mutableStateArray_0[2].write(1,
generate_st_col1_0);
/* 099 */ }
/* 100 */
/* 101 */ if (generate_isNull_9) {
/* 102 */ project_mutableStateArray_0[2].setNullAt(2);
/* 103 */ } else {
/* 104 */ project_mutableStateArray_0[2].write(2,
generate_st_col2_0);
/* 105 */ }
/* 106 */ append((project_mutableStateArray_0[2].getRow()).copy());
/* 107 */
/* 108 */ }
/* 109 */
/* 110 */ }
/* 111 */
/* 112 */ }
```
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]