From 670670107fb116090cb981ae09af654b9f955342 Mon Sep 17 00:00:00 2001 From: Tishj Date: Thu, 19 Dec 2024 16:23:16 +0100 Subject: [PATCH] no deadlocks, still need to make sure the SegmentLock inside ColumnScanState is valid though.. --- src/storage/table/column_data.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/storage/table/column_data.cpp b/src/storage/table/column_data.cpp index 058f6d6124d0..a3e957b8cc80 100644 --- a/src/storage/table/column_data.cpp +++ b/src/storage/table/column_data.cpp @@ -98,8 +98,7 @@ void ColumnData::InitializeScan(ColumnScanState &state, SegmentLock &lock) const } void ColumnData::InitializeScan(ColumnScanState &state) const { - auto lock = data.Lock(); - InitializeScan(state, lock); + InitializeScan(state, state.lock); } void ColumnData::InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx, SegmentLock &lock) const { @@ -113,8 +112,7 @@ void ColumnData::InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx, } void ColumnData::InitializeScanWithOffset(ColumnScanState &state, idx_t row_idx) const { - auto lock = data.Lock(); - InitializeScanWithOffset(state, row_idx, lock); + InitializeScanWithOffset(state, row_idx, state.lock); } ScanVectorType ColumnData::GetVectorScanType(ColumnScanState &state, idx_t scan_count, Vector &result) const { @@ -532,7 +530,7 @@ idx_t ColumnData::Fetch(ColumnScanState &state, row_t row_id, Vector &result) { // perform the fetch within the segment state.row_index = start + ((UnsafeNumericCast(row_id) - start) / STANDARD_VECTOR_SIZE * STANDARD_VECTOR_SIZE); - state.current = data.GetSegment(state.row_index); + state.current = data.GetSegment(state.lock, state.row_index); state.internal_index = state.current->start; return ScanVector(state, result, STANDARD_VECTOR_SIZE, ScanVectorType::SCAN_FLAT_VECTOR); }