@@ -380,15 +380,21 @@ impl IndexedTable {
380
380
}
381
381
}
382
382
383
- debug ! (
384
- kind = "insert" ,
385
- timeline = %timeline. name( ) ,
386
- time = timeline. typ( ) . format( time) ,
387
- entity = %ent_path,
388
- len_limit = config. indexed_bucket_num_rows,
389
- len, len_overflow,
390
- "couldn't split indexed bucket, proceeding to ignore limits"
383
+ let bucket_time_range = bucket. inner . read ( ) . time_range ;
384
+
385
+ re_log:: debug_once!(
386
+ "Failed to split bucket on timeline {}" ,
387
+ bucket. timeline. format_time_range( & bucket_time_range)
391
388
) ;
389
+
390
+ if bucket_time_range. min == bucket_time_range. max {
391
+ re_log:: warn_once!(
392
+ "Found over {} rows with the same timepoint {:?}={} - perhaps you forgot to update or remove the timeline?" ,
393
+ config. indexed_bucket_num_rows,
394
+ bucket. timeline. name( ) ,
395
+ bucket. timeline. typ( ) . format( bucket_time_range. min)
396
+ ) ;
397
+ }
392
398
}
393
399
394
400
trace ! (
@@ -437,6 +443,13 @@ impl IndexedBucket {
437
443
} = & mut * inner;
438
444
439
445
// append time to primary column and update time range appropriately
446
+
447
+ if let Some ( last_time) = col_time. last ( ) {
448
+ if time. as_i64 ( ) < * last_time {
449
+ * is_sorted = false ;
450
+ }
451
+ }
452
+
440
453
col_time. push ( time. as_i64 ( ) ) ;
441
454
* time_range = TimeRange :: new ( time_range. min . min ( time) , time_range. max . max ( time) ) ;
442
455
size_bytes_added += time. as_i64 ( ) . total_size_bytes ( ) ;
@@ -495,9 +508,6 @@ impl IndexedBucket {
495
508
}
496
509
}
497
510
498
- // TODO(#433): re_datastore: properly handle already sorted data during insertion
499
- * is_sorted = false ;
500
-
501
511
* size_bytes += size_bytes_added;
502
512
503
513
#[ cfg( debug_assertions) ]
0 commit comments