@@ -319,6 +319,8 @@ abstract class DynamicPartitionPruningSuiteBase
319319 SQLConf .DYNAMIC_PARTITION_PRUNING_REUSE_BROADCAST_ONLY .key -> " false" ,
320320 SQLConf .EXCHANGE_REUSE_ENABLED .key -> " false" ) {
321321 withTable(" fact" , " dim" ) {
322+ val numPartitions = 10
323+
322324 spark.range(10 )
323325 .map { x => Tuple3 (x, x + 1 , 0 ) }
324326 .toDF(" did" , " d1" , " d2" )
@@ -328,7 +330,7 @@ abstract class DynamicPartitionPruningSuiteBase
328330 .saveAsTable(" dim" )
329331
330332 spark.range(100 )
331- .map { x => Tuple2 (x, x % 10 ) }
333+ .map { x => Tuple2 (x, x % numPartitions ) }
332334 .toDF(" f1" , " fid" )
333335 .write.partitionBy(" fid" )
334336 .format(tableFormat)
@@ -355,6 +357,7 @@ abstract class DynamicPartitionPruningSuiteBase
355357 assert(! scan1.metrics.contains(" staticFilesSize" ))
356358 val allFilesNum = scan1.metrics(" numFiles" ).value
357359 val allFilesSize = scan1.metrics(" filesSize" ).value
360+ assert(scan1.metrics(" numPartitions" ).value === numPartitions)
358361
359362 // No dynamic partition pruning, so no static metrics
360363 // Only files from fid = 5 partition are scanned
@@ -367,6 +370,7 @@ abstract class DynamicPartitionPruningSuiteBase
367370 val partFilesSize = scan2.metrics(" filesSize" ).value
368371 assert(0 < partFilesNum && partFilesNum < allFilesNum)
369372 assert(0 < partFilesSize && partFilesSize < allFilesSize)
373+ assert(scan2.metrics(" numPartitions" ).value === 1 )
370374
371375 // Dynamic partition pruning is used
372376 // Static metrics are as-if reading the whole fact table
@@ -378,6 +382,7 @@ abstract class DynamicPartitionPruningSuiteBase
378382 assert(scan3.metrics(" staticFilesSize" ).value == allFilesSize)
379383 assert(scan3.metrics(" numFiles" ).value == partFilesNum)
380384 assert(scan3.metrics(" filesSize" ).value == partFilesSize)
385+ assert(scan3.metrics(" numPartitions" ).value === 1 )
381386 }
382387 }
383388 }
0 commit comments