@@ -4247,4 +4247,33 @@ mod tests {
4247
4247
. unwrap ( ) ;
4248
4248
ColumnDescriptor :: new ( Arc :: new ( tpe) , max_def_level, max_rep_level, path)
4249
4249
}
4250
+
4251
+ #[ test]
4252
+ fn test_page_v2_snappy_compression_fallback ( ) {
4253
+ // Test that PageV2 sets is_compressed to false when Snappy compression increases data size
4254
+ let page_writer = TestPageWriter { } ;
4255
+
4256
+ // Create WriterProperties with PageV2 and Snappy compression
4257
+ let props = WriterProperties :: builder ( )
4258
+ . set_writer_version ( WriterVersion :: PARQUET_2_0 )
4259
+ // Disable dictionary to ensure data is written directly
4260
+ . set_dictionary_enabled ( false )
4261
+ . set_compression ( Compression :: SNAPPY )
4262
+ . build ( ) ;
4263
+
4264
+ let mut column_writer =
4265
+ get_test_column_writer :: < ByteArrayType > ( Box :: new ( page_writer) , 0 , 0 , Arc :: new ( props) ) ;
4266
+
4267
+ // Create small, simple data that Snappy compression will likely increase in size
4268
+ // due to compression overhead for very small data
4269
+ let values = vec ! [ ByteArray :: from( "a" ) ] ;
4270
+
4271
+ column_writer. write_batch ( & values, None , None ) . unwrap ( ) ;
4272
+
4273
+ let result = column_writer. close ( ) . unwrap ( ) ;
4274
+ assert_eq ! (
4275
+ result. metadata. uncompressed_size( ) ,
4276
+ result. metadata. compressed_size( )
4277
+ ) ;
4278
+ }
4250
4279
}
0 commit comments