Skip to content
This repository was archived by the owner on Oct 10, 2025. It is now read-only.

Commit 0ba63ea

Browse files
authored
Fix c api parameter binding (#5117)
1 parent 7edebca commit 0ba63ea

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/c_api/prepared_statement.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ void kuzu_prepared_statement_bind_cpp_value(kuzu_prepared_statement* prepared_st
1111
const char* param_name, std::unique_ptr<Value> value) {
1212
auto* bound_values = static_cast<std::unordered_map<std::string, std::unique_ptr<Value>>*>(
1313
prepared_statement->_bound_values);
14+
bound_values->erase(param_name);
1415
bound_values->insert({param_name, std::move(value)});
1516
}
1617

test/c_api/prepared_statement_test.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ TEST_F(CApiPreparedStatementTest, BindBool) {
7171
auto value = tuple->getValue(0)->getValue<int64_t>();
7272
ASSERT_EQ(value, 3);
7373
kuzu_query_result_destroy(&result);
74+
// Bind a different parameter
75+
ASSERT_EQ(kuzu_prepared_statement_bind_bool(&preparedStatement, "1", false), KuzuSuccess);
76+
state = kuzu_connection_execute(connection, &preparedStatement, &result);
77+
ASSERT_EQ(state, KuzuSuccess);
78+
ASSERT_TRUE(kuzu_query_result_is_success(&result));
79+
ASSERT_TRUE(kuzu_query_result_has_next(&result));
80+
resultCpp = static_cast<QueryResult*>(result._query_result);
81+
tuple = resultCpp->getNext();
82+
value = tuple->getValue(0)->getValue<int64_t>();
83+
ASSERT_EQ(value, 5);
84+
kuzu_query_result_destroy(&result);
7485
kuzu_prepared_statement_destroy(&preparedStatement);
7586
}
7687

0 commit comments

Comments
 (0)