Skip to content

Commit 352b288

Browse files
committed
null safe
1 parent a64dd13 commit 352b288

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

native/spark-expr/src/static_invoke/char_varchar_utils/read_side_padding.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ fn spark_read_side_padding_space_internal<T: OffsetSizeTrait>(
119119
);
120120

121121
for (string, length) in string_array.iter().zip(int_pad_array) {
122-
match string {
123-
Some(string) => builder.append_value(add_padding_string(
122+
match (string, length) {
123+
(Some(string), Some(length)) => builder.append_value(add_padding_string(
124124
string.parse().unwrap(),
125-
length.unwrap() as usize,
125+
length as usize,
126126
truncate,
127127
SPACE,
128128
)?),
@@ -152,13 +152,15 @@ fn spark_read_side_padding_internal<T: OffsetSizeTrait, O: OffsetSizeTrait, S: O
152152
.zip(int_pad_array)
153153
.zip(pad_string_array.iter())
154154
{
155-
match string {
156-
Some(string) => builder.append_value(add_padding_string(
157-
string.parse().unwrap(),
158-
length.unwrap() as usize,
159-
truncate,
160-
pad_string.unwrap_or(SPACE),
161-
)?),
155+
match (string, length, pad_string) {
156+
(Some(string), Some(length), Some(pad_string)) => {
157+
builder.append_value(add_padding_string(
158+
string.parse().unwrap(),
159+
length as usize,
160+
truncate,
161+
pad_string,
162+
)?)
163+
}
162164
_ => builder.append_null(),
163165
}
164166
}

spark/src/test/scala/org/apache/comet/CometExpressionSuite.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2282,21 +2282,22 @@ class CometExpressionSuite extends CometTestBase with AdaptiveSparkPlanHelper {
22822282
s"create table $table(id int, name1 char(8), name2 varchar(8), len int) using parquet")
22832283
val testData = gen.generateStrings(100, dataChars, 6) ++ Seq(
22842284
"", // unicode 'e\\u{301}'
2285-
"é" // unicode '\\u{e9}'
2286-
)
2285+
"é", // unicode '\\u{e9}'
2286+
null)
22872287
testData.zipWithIndex.foreach { x =>
22882288
val len = Random.nextInt(10)
22892289
sql(s"insert into $table values(${x._2}, '${x._1}', '${x._1}', $len)")
22902290
}
22912291
// test 2-arg version
22922292
checkSparkAnswerAndOperator(
2293-
"SELECT id, rpad(name1, 10), rpad(name2, 10), rpad('111', 10)," +
2294-
s" rpad('11', len), rpad(name1, len) FROM $table ORDER BY id")
2293+
"SELECT id, rpad(name1, 10), rpad(name2, 10), rpad('111', 10), rpad('111', null)," +
2294+
s" rpad('11', len), rpad(name1, len), rpad(name1, null) FROM $table ORDER BY id")
22952295
// test 3-arg version
22962296
for (length <- Seq(2, 10)) {
22972297
checkSparkAnswerAndOperator(
22982298
s"SELECT id, name1, rpad(name1, $length, ' '), rpad('name1', 10, ' ')," +
2299-
s" rpad(name1, len, name2), rpad('111', 10, name2) FROM $table ORDER BY id")
2299+
s" rpad(name1, len, name2), rpad('111', 10, name2), rpad(name1, 10, null)," +
2300+
s" rpad(name1, null, name2) FROM $table ORDER BY id")
23002301
checkSparkAnswerAndOperator(
23012302
s"SELECT id, name2, rpad(name2, $length, ' ') FROM $table ORDER BY id")
23022303
}

0 commit comments

Comments
 (0)