Skip to content
This repository has been archived by the owner on Aug 25, 2018. It is now read-only.

Commit

Permalink
Add tests for batch binary inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
jimhester committed Oct 27, 2016
1 parent 5ace7f0 commit 934ed55
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/nanodbc.cpp
Expand Up @@ -3679,6 +3679,32 @@ void statement::bind(
impl_->bind(param, values, elements, nulls, (T*)0, direction);
}

void statement::bind(
short param,
const std::vector<std::vector<uint8_t>> & values,
param_direction direction)
{
impl_->bind(param, values, (bool*)0, (uint8_t*)0, direction);
}

void statement::bind(
short param,
const std::vector<std::vector<uint8_t>> & values,
const bool* nulls,
param_direction direction)
{
impl_->bind(param, values, nulls, (uint8_t*)0, direction);
}

void statement::bind(
short param,
const std::vector<std::vector<uint8_t>> & values,
const uint8_t* null_sentry,
param_direction direction)
{
impl_->bind(param, values, (bool*)0, null_sentry, direction);
}

void statement::bind_strings(
short param,
const string_type::value_type* values,
Expand Down
26 changes: 26 additions & 0 deletions test/base_test_fixture.h
Expand Up @@ -1503,6 +1503,32 @@ struct base_test_fixture
REQUIRE(ref == name);
}

void batch_binary_test()
{
nanodbc::connection connection = connect();
REQUIRE(connection.native_dbc_handle() != nullptr);
REQUIRE(connection.native_env_handle() != nullptr);
REQUIRE(connection.transactions() == std::size_t(0));

// Include null termination to ensure they are handled properly
const std::vector<std::vector<uint8_t>> data = { {0x00, 0x01, 0x02, 0x03},
{ 0x03, 0x02, 0x01, 0x00 }};

drop_table(connection, NANODBC_TEXT("batch_binary_test"));
nanodbc::string_type const binary_type_name = get_binary_type_name();
execute(connection, NANODBC_TEXT("create table batch_binary_test (s ") + binary_type_name + NANODBC_TEXT(")"));
nanodbc::statement query(connection);
prepare(query, NANODBC_TEXT("insert into batch_binary_test(s) values(?)"));
query.bind(0, data);
nanodbc::execute(query, 2);

nanodbc::result results = execute(connection, NANODBC_TEXT("select s from batch_binary_test;"));
REQUIRE(results.next());
REQUIRE(results.get<std::vector<uint8_t>>(0) == data[0]);
REQUIRE(results.next());
REQUIRE(results.get<std::vector<uint8_t>>(0) == data[1]);
}

void time_test()
{
auto connection = connect();
Expand Down
5 changes: 5 additions & 0 deletions test/mssql_test.cpp
Expand Up @@ -355,6 +355,11 @@ TEST_CASE_METHOD(mssql_fixture, "string_test", "[mssql][string]")
string_test();
}

TEST_CASE_METHOD(mssql_fixture, "batch_binary_test", "[mssql][binary]")
{
batch_binary_test();
}

TEST_CASE_METHOD(mssql_fixture, "transaction_test", "[mssql][transaction]")
{
transaction_test();
Expand Down
5 changes: 5 additions & 0 deletions test/mysql_test.cpp
Expand Up @@ -169,6 +169,11 @@ TEST_CASE_METHOD(mysql_fixture, "string_test", "[mysql][string]")
string_test();
}

TEST_CASE_METHOD(mysql_fixture, "batch_binary_test", "[mysql][binary]")
{
batch_binary_test();
}

TEST_CASE_METHOD(mysql_fixture, "transaction_test", "[mysql][transaction]")
{
transaction_test();
Expand Down
5 changes: 5 additions & 0 deletions test/odbc_test.cpp
Expand Up @@ -115,6 +115,11 @@ TEST_CASE_METHOD(odbc_fixture, "string_test", "[odbc][string]")
string_test();
}

TEST_CASE_METHOD(odbc_fixture, "batch_binary_test", "[odbc][binary]")
{
batch_binary_test();
}

TEST_CASE_METHOD(odbc_fixture, "transaction_test", "[odbc][transaction]")
{
transaction_test();
Expand Down
5 changes: 5 additions & 0 deletions test/sqlite_test.cpp
Expand Up @@ -390,6 +390,11 @@ TEST_CASE_METHOD(sqlite_fixture, "string_test", "[sqlite][string]")
string_test();
}

TEST_CASE_METHOD(sqlite_fixture, "batch_binary_test", "[sqlite][binary]")
{
batch_binary_test();
}

TEST_CASE_METHOD(sqlite_fixture, "time_test", "[sqlite][time]")
{
time_test();
Expand Down
5 changes: 5 additions & 0 deletions test/vertica_test.cpp
Expand Up @@ -110,6 +110,11 @@ TEST_CASE_METHOD(vertica_fixture, "string_test", "[vertica][string]")
string_test();
}

TEST_CASE_METHOD(vertica_fixture, "batch_binary_test", "[vertica][binary]")
{
batch_binary_test();
}

TEST_CASE_METHOD(vertica_fixture, "transaction_test", "[vertica][transaction]")
{
transaction_test();
Expand Down

0 comments on commit 934ed55

Please sign in to comment.