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