Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions iotdb-client/client-cpp/src/main/Column.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,18 @@ int32_t IntColumn::getInt(int32_t position) const {
return values_[position + arrayOffset_];
}

int64_t IntColumn::getLong(int32_t position) const {
return values_[position + arrayOffset_];
}

float IntColumn::getFloat(int32_t position) const {
return values_[position + arrayOffset_];
}

double IntColumn::getDouble(int32_t position) const {
return values_[position + arrayOffset_];
}

std::vector<int32_t> IntColumn::getInts() const {
return values_;
}
Expand Down Expand Up @@ -204,6 +216,10 @@ float FloatColumn::getFloat(int32_t position) const {
return values_[position + arrayOffset_];
}

double FloatColumn::getDouble(int32_t position) const {
return values_[position + arrayOffset_];
}

std::vector<float> FloatColumn::getFloats() const {
return values_;
}
Expand Down Expand Up @@ -256,6 +272,10 @@ int64_t LongColumn::getLong(int32_t position) const {
return values_[position + arrayOffset_];
}

double LongColumn::getDouble(int32_t position) const {
return values_[position + arrayOffset_];
}

std::vector<int64_t> LongColumn::getLongs() const {
return values_;
}
Expand Down
5 changes: 5 additions & 0 deletions iotdb-client/client-cpp/src/main/Column.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,9 @@ class IntColumn : public Column {
ColumnEncoding getEncoding() const override;

int32_t getInt(int32_t position) const override;
int64_t getLong(int32_t position) const override;
float getFloat(int32_t position) const override;
double getDouble(int32_t position) const override;
std::vector<int32_t> getInts() const override;

bool mayHaveNull() const override;
Expand All @@ -220,6 +223,7 @@ class FloatColumn : public Column {
ColumnEncoding getEncoding() const override;

float getFloat(int32_t position) const override;
double getDouble(int32_t position) const override;
std::vector<float> getFloats() const override;

bool mayHaveNull() const override;
Expand All @@ -244,6 +248,7 @@ class LongColumn : public Column {
ColumnEncoding getEncoding() const override;

int64_t getLong(int32_t position) const override;
double getDouble(int32_t position) const override;
std::vector<int64_t> getLongs() const override;

bool mayHaveNull() const override;
Expand Down
20 changes: 20 additions & 0 deletions iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/

#include "catch.hpp"
#include "Column.h"
#include "Session.h"
#include "SessionBuilder.h"
#include "TsBlock.h"
Expand Down Expand Up @@ -878,4 +879,23 @@ TEST_CASE("TsBlock deserialize rejects truncated malicious payload", "[TsBlockDe
std::string data(18, '\0');
data[3] = '\x10';
REQUIRE_THROWS_AS(TsBlock::deserialize(data), IoTDBException);
}

TEST_CASE("Numeric column widening getters align with Java TsFile", "[column]") {
std::vector<bool> valueIsNull(1, false);

std::vector<float> floatValues = {120.00000762939453f};
auto floatColumn = std::make_shared<FloatColumn>(0, 1, valueIsNull, floatValues);
auto rleColumn = std::make_shared<RunLengthEncodedColumn>(floatColumn, 20);
REQUIRE(floatColumn->getDouble(0) == Approx(120.0).margin(0.01));
REQUIRE(rleColumn->getDouble(0) == Approx(120.0).margin(0.01));

std::vector<int32_t> intValues = {42};
auto intColumn = std::make_shared<IntColumn>(0, 1, valueIsNull, intValues);
REQUIRE(intColumn->getLong(0) == 42);
REQUIRE(intColumn->getDouble(0) == Approx(42.0));

std::vector<int64_t> longValues = {1000};
auto longColumn = std::make_shared<LongColumn>(0, 1, valueIsNull, longValues);
REQUIRE(longColumn->getDouble(0) == Approx(1000.0));
}
Loading