Skip to content

Commit 92f5477

Browse files
author
Chong Gao
committed
Fix NPE
Signed-off-by: Chong Gao <res_life@163.com>
1 parent eafe1f3 commit 92f5477

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

iceberg/src/main/scala/com/nvidia/spark/rapids/iceberg/parquet/converter/FromIcebergShaded.scala

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName
3838

3939
object FromIcebergShaded {
4040
def unshade(columnOrder: ShadedColumnOrder): ColumnOrder = {
41+
if (columnOrder == null) {
42+
return null
43+
}
4144
columnOrder.getColumnOrderName match {
4245
case ShadedColumnOrder.ColumnOrderName.UNDEFINED => ColumnOrder.undefined()
4346
case ShadedColumnOrder.ColumnOrderName.TYPE_DEFINED_ORDER => ColumnOrder.typeDefined()
@@ -46,18 +49,30 @@ object FromIcebergShaded {
4649
}
4750

4851
def unshade(typeName: ShadedPrimitiveTypeName): PrimitiveTypeName = {
52+
if (typeName == null) {
53+
return null
54+
}
4955
PrimitiveTypeName.valueOf(typeName.name())
5056
}
5157

5258
def unshade(repetition: ShadedType.Repetition): Type.Repetition = {
59+
if (repetition == null) {
60+
return null
61+
}
5362
Type.Repetition.valueOf(repetition.name())
5463
}
5564

5665
def unshade(inner: ShadedTimeUnit): TimeUnit = {
66+
if (inner == null) {
67+
return null
68+
}
5769
TimeUnit.valueOf(inner.name())
5870
}
5971

6072
def unshade(inner: ShadedLogicalTypeAnnotation): LogicalTypeAnnotation = {
73+
if (inner == null) {
74+
return null
75+
}
6176
inner.accept(new ShadedLogicalTypeAnnotationVisitor[LogicalTypeAnnotation] {
6277
override def visit(stringLogicalType: ShadedLogicalTypeAnnotation
6378
.StringLogicalTypeAnnotation): Optional[LogicalTypeAnnotation] = {
@@ -143,6 +158,9 @@ object FromIcebergShaded {
143158

144159

145160
def unshade(inner: ShadedType): Type = {
161+
if (inner == null) {
162+
return null
163+
}
146164
inner match {
147165
case t: ShadedPrimitiveType => unshade(t)
148166
case t: ShadedMessageType => unshade(t)
@@ -152,6 +170,9 @@ object FromIcebergShaded {
152170
}
153171

154172
def unshade(inner: ShadedMessageType): MessageType = {
173+
if (inner == null) {
174+
return null
175+
}
155176
val builder = Types.buildMessage()
156177
inner.getFields.forEach { field =>
157178
builder.addField(unshade(field))
@@ -165,6 +186,9 @@ object FromIcebergShaded {
165186
}
166187

167188
def unshade(inner: ShadedGroupType): GroupType = {
189+
if (inner == null) {
190+
return null
191+
}
168192
val builder = Types.buildGroup(unshade(inner.getRepetition))
169193

170194
inner.getFields.forEach { field =>
@@ -180,6 +204,9 @@ object FromIcebergShaded {
180204

181205

182206
def unshade(inner: ShadedPrimitiveType): PrimitiveType = {
207+
if (inner == null) {
208+
return null
209+
}
183210
var builder = Types.primitive(unshade(inner.getPrimitiveTypeName),
184211
unshade(inner.getRepetition))
185212
.columnOrder(unshade(inner.columnOrder()))
@@ -197,18 +224,30 @@ object FromIcebergShaded {
197224
}
198225

199226
def unshade(inner: ShadedEncoding): Encoding = {
227+
if (inner == null) {
228+
return null
229+
}
200230
Encoding.valueOf(inner.name())
201231
}
202232

203233
def unshade(inner: ShadedColumnPath): ColumnPath = {
234+
if (inner == null) {
235+
return null
236+
}
204237
ColumnPath.get(inner.toArray: _*)
205238
}
206239

207240
def unshade(inner: ShadedCompressionCodecName): CompressionCodecName = {
241+
if (inner == null) {
242+
return null
243+
}
208244
CompressionCodecName.valueOf(inner.name())
209245
}
210246

211247
def unshade(inner: ShadedColumnChunkProperties): ColumnChunkProperties = {
248+
if (inner == null) {
249+
return null
250+
}
212251
ColumnChunkProperties.get(
213252
unshade(inner.getPath),
214253
unshade(inner.getPrimitiveType),
@@ -218,6 +257,10 @@ object FromIcebergShaded {
218257
}
219258

220259
def unshade(inner: ShadedEncodingStats): EncodingStats = {
260+
if (inner == null) {
261+
return null
262+
}
263+
221264
val builder = new EncodingStats.Builder()
222265

223266
if (inner.usesV2Pages()) {
@@ -236,10 +279,16 @@ object FromIcebergShaded {
236279
}
237280

238281
def unshade(inner: ShadedIndexReference): IndexReference = {
282+
if (inner == null) {
283+
return null
284+
}
239285
new IndexReference(inner.getOffset, inner.getLength)
240286
}
241287

242288
def unshade(inner: ShadedStatistics[_]): Statistics[_] = {
289+
if (inner == null) {
290+
return null
291+
}
243292
Statistics.getBuilderForReading(unshade(inner.`type`()))
244293
.withMin(inner.getMinBytes)
245294
.withMax(inner.getMaxBytes)
@@ -248,6 +297,9 @@ object FromIcebergShaded {
248297
}
249298

250299
def unshade(inner: ShadedColumnChunkMetaData): ColumnChunkMetaData = {
300+
if (inner == null) {
301+
return null
302+
}
251303
if (inner.isEncrypted) {
252304
throw new UnsupportedOperationException("Encrypted column chunks are not supported")
253305
}
@@ -267,6 +319,9 @@ object FromIcebergShaded {
267319
}
268320

269321
def unshade(inner: ShadedBlockMetaData): BlockMetaData = {
322+
if (inner == null) {
323+
return null
324+
}
270325
val ret = new BlockMetaData
271326
ret.setRowCount(inner.getRowCount)
272327
ret.setTotalByteSize(inner.getTotalByteSize)

0 commit comments

Comments
 (0)