Skip to content

Commit 0326e97

Browse files
Koladata Teamcopybara-github
authored andcommitted
Fix extract processor to not override errors with other status.
PiperOrigin-RevId: 715388381 Change-Id: Id66a6aba15252a4e6a12ed111b830b8226307b4c
1 parent 801fc2c commit 0326e97

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

koladata/internal/op_utils/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ cc_test(
161161
"@com_google_absl//absl/log:check",
162162
"@com_google_absl//absl/status",
163163
"@com_google_absl//absl/status:status_matchers",
164+
"@com_google_absl//absl/strings",
164165
"@com_google_absl//absl/types:span",
165166
"@com_google_arolla//arolla/dense_array",
166167
"@com_google_arolla//arolla/memory",

koladata/internal/op_utils/extract.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,17 +523,16 @@ class CopyingProcessor {
523523
}
524524
return ProcessDicts(ds, db, fallbacks);
525525
}
526-
absl::Status status = absl::OkStatus();
527526
for (const auto& attr_name_item : attr_names) {
528527
const std::string_view attr_name = attr_name_item.value<arolla::Text>();
529528
ASSIGN_OR_RETURN((auto [attr_schema, was_schema_updated]),
530529
CopyAttrSchema(ds.schema, db, fallbacks, attr_name));
531530
if (was_schema_updated || ds.slice.present_count() > 0) {
532531
// Data or schema are not yet copied.
533-
status = ProcessAttribute(ds, attr_name, attr_schema);
532+
RETURN_IF_ERROR(ProcessAttribute(ds, attr_name, attr_schema));
534533
}
535534
}
536-
return status;
535+
return absl::OkStatus();
537536
}
538537

539538
// Process slice of objects with entity schema.

koladata/internal/op_utils/extract_test.cc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "absl/log/check.h"
2828
#include "absl/status/status.h"
2929
#include "absl/status/status_matchers.h"
30+
#include "absl/strings/str_cat.h"
3031
#include "absl/types/span.h"
3132
#include "koladata/internal/data_bag.h"
3233
#include "koladata/internal/data_item.h"
@@ -2237,6 +2238,34 @@ TEST_P(ExtractTest, AnySchemaType) {
22372238
"clone/extract not supported for kAny schema"));
22382239
}
22392240

2241+
TEST_P(ExtractTest, AnySchemaForOneAttribute) {
2242+
auto db = DataBagImpl::CreateEmptyDatabag();
2243+
auto obj_ids = AllocateEmptyObjects(3);
2244+
auto schema = AllocateSchema();
2245+
2246+
for (int i = 0; i < 15; ++i) {
2247+
SetSchemaTriples(
2248+
*db, {{schema, {{absl::StrCat("x", i), DataItem(schema::kInt32)}}}});
2249+
}
2250+
SetSchemaTriples(
2251+
*db, {{schema, {{absl::StrCat("x", 15), DataItem(schema::kAny)}}}});
2252+
for (int i = 0; i < 15; ++i) {
2253+
SetSchemaTriples(
2254+
*db, {{schema, {{absl::StrCat("x", i), DataItem(schema::kInt32)}}}});
2255+
}
2256+
for (int i = 0; i < 30; ++i) {
2257+
SetDataTriples(*db,
2258+
{{obj_ids[0], {{absl::StrCat("x", i), obj_ids[1]}}}});
2259+
}
2260+
2261+
auto result_db = DataBagImpl::CreateEmptyDatabag();
2262+
EXPECT_THAT(
2263+
ExtractOp(result_db.get())(obj_ids, schema, *GetMainDb(db),
2264+
{GetFallbackDb(db).get()}, nullptr, {}),
2265+
StatusIs(absl::StatusCode::kInternal,
2266+
"clone/extract not supported for kAny schema"));
2267+
}
2268+
22402269
TEST_P(ExtractTest, AnySchemaTypeEmptySlice) {
22412270
// TODO: expect error in test.
22422271
auto db = DataBagImpl::CreateEmptyDatabag();

0 commit comments

Comments
 (0)