Skip to content

Commit ffc81b6

Browse files
authored
Merge pull request ClickHouse#79115 from ClickHouse/update-delta-kernel
Update delta-kernel-rs to latest main
2 parents 2f398f3 + d83e07f commit ffc81b6

File tree

5 files changed

+20
-22
lines changed

5 files changed

+20
-22
lines changed

contrib/delta-kernel-rs

Submodule delta-kernel-rs updated 124 files

contrib/rust_vendor

Submodule rust_vendor updated 3722 files

src/Storages/ObjectStorage/DataLakes/DeltaLake/TableSnapshot.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ class TableSnapshot::Iterator final : public DB::IObjectIterator
108108
{
109109
scan = KernelUtils::unwrapResult(ffi::scan(snapshot.get(), engine.get(), /* predicate */{}), "scan");
110110
scan_data_iterator = KernelUtils::unwrapResult(
111-
ffi::kernel_scan_data_init(engine.get(), scan.get()),
112-
"kernel_scan_data_init");
111+
ffi::scan_metadata_iter_init(engine.get(), scan.get()),
112+
"scan_metadata_iter_init");
113113
}
114114

115115
void scanDataFunc()
@@ -118,8 +118,8 @@ class TableSnapshot::Iterator final : public DB::IObjectIterator
118118
while (!shutdown.load())
119119
{
120120
bool have_scan_data_res = KernelUtils::unwrapResult(
121-
ffi::kernel_scan_data_next(scan_data_iterator.get(), this, visitData),
122-
"kernel_scan_data_next");
121+
ffi::scan_metadata_next(scan_data_iterator.get(), this, visitData),
122+
"scan_metadata_next");
123123

124124
if (have_scan_data_res)
125125
{
@@ -204,14 +204,10 @@ class TableSnapshot::Iterator final : public DB::IObjectIterator
204204

205205
static void visitData(
206206
void * engine_context,
207-
ffi::ExclusiveEngineData * engine_data,
208-
const struct ffi::KernelBoolSlice selection_vec,
209-
const ffi::CTransforms * transforms)
207+
ffi::SharedScanMetadata * scan_metadata)
210208
{
211-
ffi::visit_scan_data(engine_data, selection_vec, transforms, engine_context, Iterator::scanCallback);
212-
213-
ffi::free_bool_slice(selection_vec);
214-
ffi::free_engine_data(engine_data);
209+
ffi::visit_scan_metadata(scan_metadata, engine_context, Iterator::scanCallback);
210+
ffi::free_scan_metadata(scan_metadata);
215211
}
216212

217213
static void scanCallback(
@@ -220,6 +216,7 @@ class TableSnapshot::Iterator final : public DB::IObjectIterator
220216
int64_t size,
221217
const ffi::Stats * stats,
222218
const ffi::DvInfo * /* dv_info */,
219+
const ffi::Expression * /* transform */,
223220
const struct ffi::CStringMap * partition_map)
224221
{
225222
auto * context = static_cast<TableSnapshot::Iterator *>(engine_context);
@@ -300,7 +297,7 @@ class TableSnapshot::Iterator final : public DB::IObjectIterator
300297

301298
private:
302299
using KernelScan = KernelPointerWrapper<ffi::SharedScan, ffi::free_scan>;
303-
using KernelScanDataIterator = KernelPointerWrapper<ffi::SharedScanDataIterator, ffi::free_kernel_scan_data>;
300+
using KernelScanDataIterator = KernelPointerWrapper<ffi::SharedScanMetadataIterator, ffi::free_scan_metadata_iter>;
304301

305302
const KernelExternEngine & engine;
306303
const KernelSnapshot & snapshot;
@@ -395,7 +392,7 @@ void TableSnapshot::initSnapshotImpl() const
395392
read_schema = getReadSchemaFromSnapshot(scan_state.get());
396393
LOG_TRACE(log, "Table read schema: {}", fmt::join(read_schema.getNames(), ", "));
397394

398-
partition_columns = getPartitionColumnsFromSnapshot(scan_state.get());
395+
partition_columns = getPartitionColumnsFromSnapshot(snapshot.get());
399396
LOG_TRACE(log, "Partition columns: {}", fmt::join(partition_columns, ", "));
400397
}
401398

src/Storages/ObjectStorage/DataLakes/DeltaLake/getSchemaFromSnapshot.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,14 @@ class SchemaVisitorData
149149
*/
150150
class SchemaVisitor
151151
{
152-
using KernelSharedSchema = KernelPointerWrapper<ffi::SharedSchema, ffi::free_global_read_schema>;
152+
using KernelSharedSchema = KernelPointerWrapper<ffi::SharedSchema, ffi::free_schema>;
153153
using KernelStringSliceIterator = KernelPointerWrapper<ffi::StringSliceIterator, ffi::free_string_slice_data>;
154154
public:
155155
static void visitTableSchema(ffi::SharedSnapshot * snapshot, SchemaVisitorData & data)
156156
{
157+
KernelSharedSchema schema(ffi::logical_schema(snapshot));
157158
auto visitor = createVisitor(data);
158-
[[maybe_unused]] size_t result = ffi::visit_snapshot_schema(snapshot, &visitor);
159+
[[maybe_unused]] size_t result = ffi::visit_schema(schema.get(), &visitor);
159160
chassert(result == 0, "Unexpected result: " + DB::toString(result));
160161
}
161162

@@ -170,10 +171,10 @@ class SchemaVisitor
170171
}
171172

172173
static void visitPartitionColumns(
173-
ffi::SharedGlobalScanState * scan_state,
174+
ffi::SharedSnapshot * snapshot,
174175
SchemaVisitorData & data)
175176
{
176-
KernelStringSliceIterator partition_columns_iter(ffi::get_partition_columns(scan_state));
177+
KernelStringSliceIterator partition_columns_iter(ffi::get_partition_columns(snapshot));
177178
while (ffi::string_slice_next(partition_columns_iter.get(), &data, &visitPartitionColumn)) {}
178179
}
179180

@@ -481,10 +482,10 @@ DB::NamesAndTypesList getReadSchemaFromSnapshot(ffi::SharedGlobalScanState * sca
481482
return data.getSchemaResult().names_and_types;
482483
}
483484

484-
DB::Names getPartitionColumnsFromSnapshot(ffi::SharedGlobalScanState * scan_state)
485+
DB::Names getPartitionColumnsFromSnapshot(ffi::SharedSnapshot * snapshot)
485486
{
486487
SchemaVisitorData data;
487-
SchemaVisitor::visitPartitionColumns(scan_state, data);
488+
SchemaVisitor::visitPartitionColumns(snapshot, data);
488489
return data.getPartitionColumns();
489490
}
490491

src/Storages/ObjectStorage/DataLakes/DeltaLake/getSchemaFromSnapshot.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ DB::NamesAndTypesList getReadSchemaFromSnapshot(ffi::SharedGlobalScanState * sca
2727
/// Get list of partition columns.
2828
/// Read schema does not contain partition columns,
2929
/// therefore partition columns are passed separately.
30-
DB::Names getPartitionColumnsFromSnapshot(ffi::SharedGlobalScanState * scan_state);
30+
DB::Names getPartitionColumnsFromSnapshot(ffi::SharedSnapshot * snapshot);
3131

3232
}
3333

0 commit comments

Comments
 (0)