Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashleyhx committed Sep 29, 2023
1 parent 1f191f9 commit cbb7cfc
Show file tree
Hide file tree
Showing 2 changed files with 105 additions and 1 deletion.
105 changes: 105 additions & 0 deletions test/c_api/prepared_statement_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,111 @@ TEST_F(CApiPreparedStatementTest, BindInt16) {
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindInt8) {
auto connection = getConnection();
auto query =
"MATCH (a:person) -[s:studyAt]-> (b:organisation) WHERE s.level > $1 RETURN COUNT(*)";
auto preparedStatement = kuzu_connection_prepare(connection, query);
kuzu_prepared_statement_bind_int8(preparedStatement, (char*)"1", 3);
auto result = kuzu_connection_execute(connection, preparedStatement);
ASSERT_NE(result, nullptr);
ASSERT_NE(result->_query_result, nullptr);
ASSERT_EQ(kuzu_query_result_get_num_tuples(result), 1);
ASSERT_EQ(kuzu_query_result_get_num_columns(result), 1);
ASSERT_TRUE(kuzu_query_result_is_success(result));
ASSERT_TRUE(kuzu_query_result_has_next(result));
auto resultCpp = static_cast<QueryResult*>(result->_query_result);
auto tuple = resultCpp->getNext();
auto value = tuple->getValue(0)->getValue<int64_t>();
ASSERT_EQ(value, 2);
kuzu_query_result_destroy(result);
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindUInt64) {
auto connection = getConnection();
auto query =
"MATCH (a:person) -[s:studyAt]-> (b:organisation) WHERE s.code > $1 RETURN COUNT(*)";
auto preparedStatement = kuzu_connection_prepare(connection, query);
kuzu_prepared_statement_bind_uint64(preparedStatement, (char*)"1", 100);
auto result = kuzu_connection_execute(connection, preparedStatement);
ASSERT_NE(result, nullptr);
ASSERT_NE(result->_query_result, nullptr);
ASSERT_EQ(kuzu_query_result_get_num_tuples(result), 1);
ASSERT_EQ(kuzu_query_result_get_num_columns(result), 1);
ASSERT_TRUE(kuzu_query_result_is_success(result));
ASSERT_TRUE(kuzu_query_result_has_next(result));
auto resultCpp = static_cast<QueryResult*>(result->_query_result);
auto tuple = resultCpp->getNext();
auto value = tuple->getValue(0)->getValue<int64_t>();
ASSERT_EQ(value, 2);
kuzu_query_result_destroy(result);
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindUInt32) {
auto connection = getConnection();
auto query =
"MATCH (a:person) -[s:studyAt]-> (b:organisation) WHERE s.temprature> $1 RETURN COUNT(*)";
auto preparedStatement = kuzu_connection_prepare(connection, query);
kuzu_prepared_statement_bind_uint32(preparedStatement, (char*)"1", 10);
auto result = kuzu_connection_execute(connection, preparedStatement);
ASSERT_NE(result, nullptr);
ASSERT_NE(result->_query_result, nullptr);
ASSERT_EQ(kuzu_query_result_get_num_tuples(result), 1);
ASSERT_EQ(kuzu_query_result_get_num_columns(result), 1);
ASSERT_TRUE(kuzu_query_result_is_success(result));
ASSERT_TRUE(kuzu_query_result_has_next(result));
auto resultCpp = static_cast<QueryResult*>(result->_query_result);
auto tuple = resultCpp->getNext();
auto value = tuple->getValue(0)->getValue<int64_t>();
ASSERT_EQ(value, 2);
kuzu_query_result_destroy(result);
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindUInt16) {
auto connection = getConnection();
auto query =
"MATCH (a:person) -[s:studyAt]-> (b:organisation) WHERE s.ulength> $1 RETURN COUNT(*)";
auto preparedStatement = kuzu_connection_prepare(connection, query);
kuzu_prepared_statement_bind_uint16(preparedStatement, (char*)"1", 100);
auto result = kuzu_connection_execute(connection, preparedStatement);
ASSERT_NE(result, nullptr);
ASSERT_NE(result->_query_result, nullptr);
ASSERT_EQ(kuzu_query_result_get_num_tuples(result), 1);
ASSERT_EQ(kuzu_query_result_get_num_columns(result), 1);
ASSERT_TRUE(kuzu_query_result_is_success(result));
ASSERT_TRUE(kuzu_query_result_has_next(result));
auto resultCpp = static_cast<QueryResult*>(result->_query_result);
auto tuple = resultCpp->getNext();
auto value = tuple->getValue(0)->getValue<int64_t>();
ASSERT_EQ(value, 2);
kuzu_query_result_destroy(result);
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindUInt8) {
auto connection = getConnection();
auto query =
"MATCH (a:person) -[s:studyAt]-> (b:organisation) WHERE s.ulevel> $1 RETURN COUNT(*)";
auto preparedStatement = kuzu_connection_prepare(connection, query);
kuzu_prepared_statement_bind_uint8(preparedStatement, (char*)"1", 14);
auto result = kuzu_connection_execute(connection, preparedStatement);
ASSERT_NE(result, nullptr);
ASSERT_NE(result->_query_result, nullptr);
ASSERT_EQ(kuzu_query_result_get_num_tuples(result), 1);
ASSERT_EQ(kuzu_query_result_get_num_columns(result), 1);
ASSERT_TRUE(kuzu_query_result_is_success(result));
ASSERT_TRUE(kuzu_query_result_has_next(result));
auto resultCpp = static_cast<QueryResult*>(result->_query_result);
auto tuple = resultCpp->getNext();
auto value = tuple->getValue(0)->getValue<int64_t>();
ASSERT_EQ(value, 2);
kuzu_query_result_destroy(result);
kuzu_prepared_statement_destroy(preparedStatement);
}

TEST_F(CApiPreparedStatementTest, BindDouble) {
auto connection = getConnection();
auto query = "MATCH (a:person) WHERE a.eyeSight > $1 RETURN COUNT(*)";
Expand Down
1 change: 0 additions & 1 deletion tools/python_api/src_cpp/py_connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,6 @@ Value PyConnection::transformPythonValue(py::handle val) {
return Value::createValue<bool>(val.cast<bool>());
} else if (py::isinstance<py::int_>(val)) {
return Value::createValue<int64_t>(val.cast<int64_t>());

} else if (py::isinstance<py::float_>(val)) {
return Value::createValue<double_t>(val.cast<double_t>());
} else if (py::isinstance<py::str>(val)) {
Expand Down

0 comments on commit cbb7cfc

Please sign in to comment.