@@ -385,14 +385,16 @@ get_sorted_bucket_in_desc_order(TsStatsChunkSegment *seg, uint8 *out)
385385 */
386386static inline int32
387387ts_stats_chunk_update_at (TsStatsChunkSegment * seg , Oid compressed_relid , Oid uncompressed_relid ,
388- int32 idx , uint8 bucket_idx , uint64 old_state )
388+ int32 idx , uint64 old_state )
389389{
390390 Assert (seg != NULL || OidIsValid (compressed_relid ) || OidIsValid (uncompressed_relid ));
391391 if (seg == NULL || !OidIsValid (compressed_relid ) || !OidIsValid (uncompressed_relid ))
392392 {
393393 return TS_STATS_INVALID_IDX ;
394394 }
395395
396+ uint32 bucket_size = seg -> num_slots / TS_STATS_BUCKETS ;
397+ uint32 bucket_idx = idx / bucket_size ;
396398 uint64 new_seqno = pg_atomic_add_fetch_u64 (& seg -> update_seqno , 1 );
397399 uint64 new_state = (new_seqno << TS_STATS_CHUNK_METADATA_SEQNO_SHIFT ) |
398400 TS_STATS_CHUNK_METADATA_VALID_FLAG |
@@ -475,7 +477,6 @@ ts_stats_chunk_segment_prepare_upsert(TsStatsChunkSegment *seg, Oid compressed_r
475477 compressed_relid ,
476478 uncompressed_relid ,
477479 idx ,
478- bucket_idx ,
479480 state ) != TS_STATS_INVALID_IDX )
480481 {
481482 return (int32 ) idx ;
@@ -493,7 +494,6 @@ ts_stats_chunk_segment_prepare_upsert(TsStatsChunkSegment *seg, Oid compressed_r
493494 compressed_relid ,
494495 uncompressed_relid ,
495496 idx ,
496- bucket_idx ,
497497 state ) != TS_STATS_INVALID_IDX )
498498 {
499499 return (int32 ) idx ;
@@ -525,17 +525,11 @@ ts_stats_chunk_segment_prepare_upsert(TsStatsChunkSegment *seg, Oid compressed_r
525525 continue ;
526526 }
527527
528- uint8 bucket_idx = idx / bucket_size ;
529-
530528 /* try to claim this slot, and it will update its state to in-progress
531529 * and the bucket's last update sequence number.
532530 */
533- if (ts_stats_chunk_update_at (seg ,
534- compressed_relid ,
535- uncompressed_relid ,
536- idx ,
537- bucket_idx ,
538- state ) != TS_STATS_INVALID_IDX )
531+ if (ts_stats_chunk_update_at (seg , compressed_relid , uncompressed_relid , idx , state ) !=
532+ TS_STATS_INVALID_IDX )
539533 {
540534 TsStatsChunk * slot = & slot_base [idx ];
541535 ts_stats_chunk_init_slot (slot );
@@ -573,12 +567,8 @@ ts_stats_chunk_segment_prepare_upsert(TsStatsChunkSegment *seg, Oid compressed_r
573567 {
574568 /* this slot is empty, although at this point it should not happen
575569 * as the previous loops should have handled empty slots. */
576- if (ts_stats_chunk_update_at (seg ,
577- compressed_relid ,
578- uncompressed_relid ,
579- idx ,
580- oldest_bucket_idx ,
581- state ) != TS_STATS_INVALID_IDX )
570+ if (ts_stats_chunk_update_at (seg , compressed_relid , uncompressed_relid , idx , state ) !=
571+ TS_STATS_INVALID_IDX )
582572 {
583573 TsStatsChunk * slot = & slot_base [idx ];
584574 ts_stats_chunk_init_slot (slot );
@@ -610,7 +600,6 @@ ts_stats_chunk_segment_prepare_upsert(TsStatsChunkSegment *seg, Oid compressed_r
610600 compressed_relid ,
611601 uncompressed_relid ,
612602 candidate_idx ,
613- oldest_bucket_idx ,
614603 state );
615604
616605 if (updated_idx != TS_STATS_INVALID_IDX )
0 commit comments