Skip to content

Commit fab901e

Browse files
committed
vendor: Update vendored sources to duckdb/duckdb@453acf2
Add file_index virtual column to the multi file reader that returns the file index of the read file (duckdb/duckdb#17144)
1 parent 6d54d97 commit fab901e

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

src/duckdb/src/common/multi_file/multi_file_column_mapper.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,11 +647,13 @@ MultiFileColumnMapper::EvaluateConstantFilters(ResultColumnMapping &mapping,
647647
//! FIXME: this does not check for filters against struct fields that are not present in the file
648648
auto global_column_id = global_column_ids[global_index].GetPrimaryIndex();
649649
Value constant_value;
650-
auto virtual_it = virtual_columns.find(global_column_ids[global_index].GetPrimaryIndex());
650+
auto virtual_it = virtual_columns.find(global_column_id);
651651
if (virtual_it != virtual_columns.end()) {
652652
auto &virtual_column = virtual_it->second;
653653
if (virtual_column.name == "filename") {
654654
constant_value = Value(reader_data.reader->GetFileName());
655+
} else if (global_column_id == MultiFileReader::COLUMN_IDENTIFIER_FILE_INDEX) {
656+
constant_value = Value::UBIGINT(reader_data.reader->file_list_idx.GetIndex());
655657
} else {
656658
throw InternalException("Unrecognized virtual column found: %s", virtual_column.name);
657659
}

src/duckdb/src/common/multi_file/multi_file_reader.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace duckdb {
1818

1919
constexpr column_t MultiFileReader::COLUMN_IDENTIFIER_FILENAME;
2020
constexpr column_t MultiFileReader::COLUMN_IDENTIFIER_FILE_ROW_NUMBER;
21+
constexpr column_t MultiFileReader::COLUMN_IDENTIFIER_FILE_INDEX;
2122
constexpr int32_t MultiFileReader::ORDINAL_FIELD_ID;
2223
constexpr int32_t MultiFileReader::FILENAME_FIELD_ID;
2324
constexpr int32_t MultiFileReader::ROW_ID_FIELD_ID;
@@ -261,6 +262,7 @@ void MultiFileReader::GetVirtualColumns(ClientContext &context, MultiFileReaderB
261262
bind_data.filename_idx = COLUMN_IDENTIFIER_FILENAME;
262263
result.insert(make_pair(COLUMN_IDENTIFIER_FILENAME, TableColumn("filename", LogicalType::VARCHAR)));
263264
}
265+
result.insert(make_pair(COLUMN_IDENTIFIER_FILE_INDEX, TableColumn("file_index", LogicalType::UBIGINT)));
264266
}
265267

266268
void MultiFileReader::FinalizeBind(MultiFileReaderData &reader_data, const MultiFileOptions &file_options,
@@ -284,11 +286,16 @@ void MultiFileReader::FinalizeBind(MultiFileReaderData &reader_data, const Multi
284286
auto &col_id = global_column_ids[i];
285287
auto column_id = col_id.GetPrimaryIndex();
286288
if ((options.filename_idx.IsValid() && column_id == options.filename_idx.GetIndex()) ||
287-
column_id == MultiFileReader::COLUMN_IDENTIFIER_FILENAME) {
289+
column_id == COLUMN_IDENTIFIER_FILENAME) {
288290
// filename
289291
reader_data.constant_map.Add(global_idx, Value(filename));
290292
continue;
291293
}
294+
if (column_id == COLUMN_IDENTIFIER_FILE_INDEX) {
295+
// filename
296+
reader_data.constant_map.Add(global_idx, Value::UBIGINT(reader_data.reader->file_list_idx.GetIndex()));
297+
continue;
298+
}
292299
if (IsVirtualColumn(column_id)) {
293300
continue;
294301
}

src/duckdb/src/function/table/version/pragma_version.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#ifndef DUCKDB_PATCH_VERSION
2-
#define DUCKDB_PATCH_VERSION "0-dev2573"
2+
#define DUCKDB_PATCH_VERSION "0-dev2575"
33
#endif
44
#ifndef DUCKDB_MINOR_VERSION
55
#define DUCKDB_MINOR_VERSION 3
@@ -8,10 +8,10 @@
88
#define DUCKDB_MAJOR_VERSION 1
99
#endif
1010
#ifndef DUCKDB_VERSION
11-
#define DUCKDB_VERSION "v1.3.0-dev2573"
11+
#define DUCKDB_VERSION "v1.3.0-dev2575"
1212
#endif
1313
#ifndef DUCKDB_SOURCE_ID
14-
#define DUCKDB_SOURCE_ID "ba807cb640"
14+
#define DUCKDB_SOURCE_ID "453acf2e75"
1515
#endif
1616
#include "duckdb/function/table/system_functions.hpp"
1717
#include "duckdb/main/database.hpp"

src/duckdb/src/include/duckdb/common/multi_file/multi_file_reader.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct MultiFileReader {
3434
public:
3535
static constexpr column_t COLUMN_IDENTIFIER_FILENAME = UINT64_C(9223372036854775808);
3636
static constexpr column_t COLUMN_IDENTIFIER_FILE_ROW_NUMBER = UINT64_C(9223372036854775809);
37+
static constexpr column_t COLUMN_IDENTIFIER_FILE_INDEX = UINT64_C(9223372036854775810);
3738
// Reserved field id used for the "_file" field according to the iceberg spec (used for file_row_number)
3839
static constexpr int32_t ORDINAL_FIELD_ID = 2147483645;
3940
// Reserved field id used for the "_pos" field according to the iceberg spec (used for file_row_number)

0 commit comments

Comments
 (0)