@@ -55,6 +55,7 @@ pub struct ParquetFilePath(ObjPath);
55
55
impl ParquetFilePath {
56
56
/// Generate a parquet file path using the given arguments. This will convert the provided
57
57
/// `chunk_time` into a date time string with format `'YYYY-MM-DD/HH-MM'`
58
+ #[ allow( clippy:: too_many_arguments) ]
58
59
pub fn new (
59
60
host_prefix : & str ,
60
61
db_name : & str ,
@@ -63,14 +64,26 @@ impl ParquetFilePath {
63
64
table_id : u32 ,
64
65
chunk_time : i64 ,
65
66
wal_file_sequence_number : WalFileSequenceNumber ,
67
+ sub_chunk_index : Option < u64 > ,
66
68
) -> Self {
67
69
let date_time = DateTime :: < Utc > :: from_timestamp_nanos ( chunk_time) ;
68
- let path = ObjPath :: from ( format ! (
69
- "{host_prefix}/dbs/{db_name}-{db_id}/{table_name}-{table_id}/{date_string}/{wal_seq:010}.{ext}" ,
70
- date_string = date_time. format( "%Y-%m-%d/%H-%M" ) ,
71
- wal_seq = wal_file_sequence_number. as_u64( ) ,
72
- ext = PARQUET_FILE_EXTENSION
73
- ) ) ;
70
+ let path = if sub_chunk_index. is_some ( ) {
71
+ ObjPath :: from ( format ! (
72
+ "{host_prefix}/dbs/{db_name}-{db_id}/{table_name}-{table_id}/{date_string}/{wal_seq:010}-{chunk_idx}.{ext}" ,
73
+ date_string = date_time. format( "%Y-%m-%d/%H-%M" ) ,
74
+ wal_seq = wal_file_sequence_number. as_u64( ) ,
75
+ chunk_idx = sub_chunk_index. unwrap( ) ,
76
+ ext = PARQUET_FILE_EXTENSION
77
+ ) )
78
+
79
+ } else {
80
+ ObjPath :: from ( format ! (
81
+ "{host_prefix}/dbs/{db_name}-{db_id}/{table_name}-{table_id}/{date_string}/{wal_seq:010}.{ext}" ,
82
+ date_string = date_time. format( "%Y-%m-%d/%H-%M" ) ,
83
+ wal_seq = wal_file_sequence_number. as_u64( ) ,
84
+ ext = PARQUET_FILE_EXTENSION
85
+ ) )
86
+ } ;
74
87
Self ( path)
75
88
}
76
89
}
@@ -143,6 +156,7 @@ fn parquet_file_path_new() {
143
156
. timestamp_nanos_opt( )
144
157
. unwrap( ) ,
145
158
WalFileSequenceNumber :: new( 1337 ) ,
159
+ None ,
146
160
) ,
147
161
ObjPath :: from( "my_host/dbs/my_db-0/my_table-0/2038-01-19/03-14/0000001337.parquet" )
148
162
) ;
@@ -162,6 +176,7 @@ fn parquet_file_percent_encoded() {
162
176
. timestamp_nanos_opt( )
163
177
. unwrap( ) ,
164
178
WalFileSequenceNumber :: new( 100 ) ,
179
+ None ,
165
180
)
166
181
. as_ref( )
167
182
. as_ref( ) ,
0 commit comments