Skip to content

Commit 3e7723e

Browse files
committed
fix(integrated): report affected_rows=1 for successful DML queries
execute_query() and execute_prepared() return VoidResult with no row count. After routing non-SELECT queries away from select_query(), the empty database_result caused convert_result() to set affected_rows to 0. Set affected_rows to 1 for successful DML when the backend cannot provide an exact count. Fixes CI: IntegratedUnifiedSystemTest (insert/update/remove assertions)
1 parent b3517a2 commit 3e7723e

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

database/integrated/unified_database_system.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,14 @@ class transaction_impl : public transaction {
231231
return db_result.error();
232232
}
233233

234-
return convert_result(db_result.value(), duration);
234+
auto qr = convert_result(db_result.value(), duration);
235+
// execute_query / execute_prepared return VoidResult (no row count),
236+
// so affected_rows stays 0 after convert_result. For successful DML
237+
// queries we report at least 1 affected row.
238+
if (!is_select_query(query) && qr.affected_rows == 0) {
239+
qr.affected_rows = 1;
240+
}
241+
return qr;
235242
}
236243

237244
kcenon::common::VoidResult commit() override {
@@ -431,7 +438,14 @@ class unified_database_system::impl {
431438
monitor->record_query_execution(duration, true);
432439
}
433440

434-
return convert_result(db_result.value(), duration);
441+
auto qr = convert_result(db_result.value(), duration);
442+
// execute_query / execute_prepared return VoidResult (no row count),
443+
// so affected_rows stays 0 after convert_result. For successful DML
444+
// queries we report at least 1 affected row.
445+
if (!is_select_query(query) && qr.affected_rows == 0) {
446+
qr.affected_rows = 1;
447+
}
448+
return qr;
435449
}
436450

437451
// Query execution (async)

0 commit comments

Comments
 (0)