Skip to content

Commit

Permalink
This fix adds a new API cass_value_is_null to our CQL library so
Browse files Browse the repository at this point in the history
that we can check if a value is null or not before trying to decode
the datatype and readh the column value.
Closes-bug:#1699934

Change-Id: I884f4c275c7cb92b19884d4cc4d45f9cd3a2c8d4
  • Loading branch information
arvindvis committed Jun 23, 2017
1 parent 65acf2a commit 5b2442c
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/database/cassandra/cql/cql_if.cc
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,9 @@ std::string CassSelectFromTable(const std::string &table) {

static GenDb::DbDataValue CassValue2DbDataValue(
interface::CassLibrary *cci, const CassValue *cvalue) {
if (cci->CassValueIsNull(cvalue)) {
return GenDb::DbDataValue();
}
CassValueType cvtype(cci->GetCassValueType(cvalue));
switch (cvtype) {
case CASS_VALUE_TYPE_ASCII:
Expand Down Expand Up @@ -3093,6 +3096,10 @@ CassError CassDatastaxLibrary::CassValueGetBytes(const CassValue* value,
return cass_value_get_bytes(value, output, output_size);
}

cass_bool_t CassDatastaxLibrary::CassValueIsNull(const CassValue* value) {
return cass_value_is_null(value);
}

// CassInet
CassInet CassDatastaxLibrary::CassInetInitV4(
const cass_uint8_t* address) {
Expand Down
2 changes: 2 additions & 0 deletions src/database/cassandra/cql/cql_lib_if.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ class CassLibrary {
CassInet* output) = 0;
virtual CassError CassValueGetBytes(const CassValue* value,
const cass_byte_t** output, size_t* output_size) = 0;
virtual cass_bool_t CassValueIsNull(const CassValue* value) = 0;

// CassInet
virtual CassInet CassInetInitV4(const cass_uint8_t* address) = 0;
Expand Down Expand Up @@ -298,6 +299,7 @@ class CassDatastaxLibrary : public CassLibrary {
CassInet* output);
virtual CassError CassValueGetBytes(const CassValue* value,
const cass_byte_t** output, size_t* output_size);
virtual cass_bool_t CassValueIsNull(const CassValue* value);

// CassInet
virtual CassInet CassInetInitV4(const cass_uint8_t* address);
Expand Down

0 comments on commit 5b2442c

Please sign in to comment.