Skip to content

Commit

Permalink
add unsigned int types
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashleyhx committed Sep 20, 2023
1 parent 7bf0d6e commit e3fb017
Show file tree
Hide file tree
Showing 66 changed files with 1,999 additions and 126 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.11)

project(Kuzu VERSION 0.0.8.8 LANGUAGES CXX)
project(Kuzu VERSION 0.0.8.9 LANGUAGES CXX)

find_package(Threads REQUIRED)

Expand Down
8 changes: 4 additions & 4 deletions dataset/tinysnb/eStudyAt.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from,to,YEAR,Places,length,level
0,1,2021,"[wwAewsdndweusd,wek]",5,5
2,1,2020,"[anew,jsdnwusklklklwewsd]",55,120
8,1,2020,"[awndsnjwejwen,isuhuwennjnuhuhuwewe]",22,2
from,to,YEAR,Places,length,level,code,temprature,ulength,ulevel
0,1,2021,"[wwAewsdndweusd,wek]",5,5,6556,35,120,15
2,1,2020,"[anew,jsdnwusklklklwewsd]",55,120,6689,1,90,220
8,1,2020,"[awndsnjwejwen,isuhuwennjnuhuhuwewe]",22,2,23,20,180,12
4 changes: 2 additions & 2 deletions dataset/tinysnb/schema.cypher
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
create node table person (ID INt64, fName StRING, gender INT64, isStudent BoOLEAN, isWorker BOOLEAN, age INT64, eyeSight DOUBLE, birthdate DATE, registerTime TIMESTAMP, lastJobDuration interval, workedHours INT64[], usedNames STRING[], courseScoresPerTerm INT64[][], grades INT64[4], height float, PRIMARY KEY (ID));
create node table organisation (ID INT64, name STRING, orgCode INT64, mark DOUBLE, score INT64, history STRING, licenseValidInterval INTERVAL, rating DOUBLE, state STRUCT(revenue INT16, location STRING[], stock STRUCT(price INT64[], volume INT64)), info UNION(price FLOAT, movein DATE, note STRING),PRIMARY KEY (ID));
create node table movies (name STRING, length INT32, note STRING, description STRUCT(rating DOUBLE, stars INT8, views INT64, release TIMESTAMP, film DATE), content BYTEA, audience MAP(STRING, INT64), grade union(credit boolean, grade1 double, grade2 int64), PRIMARY KEY (name));
create node table movies (name STRING, length INT32, note STRING, description STRUCT(rating DOUBLE, stars INT8, views INT64, release TIMESTAMP, film DATE, u8 UINT8, u16 UINT16, u32 UINT32, u64 UINT64), content BYTEA, audience MAP(STRING, INT64), grade union(credit boolean, grade1 double, grade2 int64), PRIMARY KEY (name));
create rel table knows (FROM person TO person, date DATE, meetTime TIMESTAMP, validInterval INTERVAL, comments STRING[], MANY_MANY);
create rel table studyAt (FROM person TO organisation, year INT64, places STRING[], length INT16, level INT8, MANY_ONE);
create rel table studyAt (FROM person TO organisation, year INT64, places STRING[], length INT16, level INT8, code UINT64, temprature UINT32, ulength UINT16, ulevel UINT8, MANY_ONE);
create rel table workAt (FROM person TO organisation, year INT64, grading DOUBLE[2], rating float, MANY_ONE);
create rel table meets (FROM person TO person, location FLOAT[2], times INT, data BYTEA, MANY_ONE);
create rel table marries (FROM person TO person, usedAddress STRING[], address INT16[2], note STRING, ONE_ONE);
6 changes: 3 additions & 3 deletions dataset/tinysnb/vMovies.csv
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Sóló cón tu párejâ,126, this is a very very good movie,"{rating: 5.3, stars:2, views: 152, release: 2011-08-20 11:25:30, film: 2012-05-11}","\\xAA\\xABinteresting\\x0B","{audience1= 52,audience53= 42}",true
The 😂😃🧘🏻‍♂️🌍🌦️🍞🚗 movie,2544, the movie is very very good,"{rating: 7, stars:10, views: 982, release: 2018-11-13 13:33:11, film: 2014-09-12}","\\xAB\\xCD",{audience1= 33},8.989
Roma,298,the movie is very interesting and funny,"{rating: 1223, stars:100, views: 10003, release: 2011-02-11 16:44:22, film: 2013-02-22}","pure ascii characters","{}",254
Sóló cón tu párejâ,126, this is a very very good movie,"{rating: 5.3, stars:2, views: 152, release: 2011-08-20 11:25:30, film: 2012-05-11, u8: 220, u16: 20, u32: 1, u64: 180}","\\xAA\\xABinteresting\\x0B","{audience1= 52,audience53= 42}",true
The 😂😃🧘🏻‍♂️🌍🌦️🍞🚗 movie,2544, the movie is very very good,"{rating: 7, stars:10, views: 982, release: 2018-11-13 13:33:11, film: 2014-09-12, u8: 12, u16: 120, u32: 55, u64: 1}","\\xAB\\xCD",{audience1= 33},8.989
Roma,298,the movie is very interesting and funny,"{rating: 1223, stars:100, views: 10003, release: 2011-02-11 16:44:22, film: 2013-02-22, u8: 1, u16: 15, u32: 200, u64: 4}","pure ascii characters","{}",254
61 changes: 59 additions & 2 deletions src/common/types/types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ std::string PhysicalTypeUtils::physicalTypeToString(PhysicalTypeID physicalType)
return "INT16";
case PhysicalTypeID::INT8:
return "INT8";
case PhysicalTypeID::UINT64:
return "UINT64";
case PhysicalTypeID::UINT32:
return "UINT32";
case PhysicalTypeID::UINT16:
return "UINT16";
case PhysicalTypeID::UINT8:
return "UINT8";
case PhysicalTypeID::DOUBLE:
return "DOUBLE";
case PhysicalTypeID::FLOAT:
Expand Down Expand Up @@ -60,6 +68,14 @@ uint32_t PhysicalTypeUtils::getFixedTypeSize(PhysicalTypeID physicalType) {
return sizeof(int16_t);
case PhysicalTypeID::INT8:
return sizeof(int8_t);
case PhysicalTypeID::UINT64:
return sizeof(uint64_t);
case PhysicalTypeID::UINT32:
return sizeof(uint32_t);
case PhysicalTypeID::UINT16:
return sizeof(uint16_t);
case PhysicalTypeID::UINT8:
return sizeof(uint8_t);
case PhysicalTypeID::DOUBLE:
return sizeof(double_t);
case PhysicalTypeID::FLOAT:
Expand Down Expand Up @@ -344,6 +360,18 @@ void LogicalType::setPhysicalType() {
case LogicalTypeID::INT8: {
physicalType = PhysicalTypeID::INT8;
} break;
case LogicalTypeID::UINT64: {
physicalType = PhysicalTypeID::UINT64;
} break;
case LogicalTypeID::UINT32: {
physicalType = PhysicalTypeID::UINT32;
} break;
case LogicalTypeID::UINT16: {
physicalType = PhysicalTypeID::UINT16;
} break;
case LogicalTypeID::UINT8: {
physicalType = PhysicalTypeID::UINT8;
} break;
case LogicalTypeID::DOUBLE: {
physicalType = PhysicalTypeID::DOUBLE;
} break;
Expand Down Expand Up @@ -417,6 +445,14 @@ LogicalTypeID LogicalTypeUtils::dataTypeIDFromString(const std::string& dataType
return LogicalTypeID::INT32;
} else if ("INT8" == upperDataTypeIDString) {
return LogicalTypeID::INT8;
} else if ("UINT64" == upperDataTypeIDString) {
return LogicalTypeID::UINT64;
} else if ("UINT32" == upperDataTypeIDString) {
return LogicalTypeID::UINT32;
} else if ("UINT16" == upperDataTypeIDString) {
return LogicalTypeID::UINT16;
} else if ("UINT8" == upperDataTypeIDString) {
return LogicalTypeID::UINT8;
} else if ("DOUBLE" == upperDataTypeIDString) {
return LogicalTypeID::DOUBLE;
} else if ("FLOAT" == upperDataTypeIDString) {
Expand Down Expand Up @@ -493,6 +529,10 @@ std::string LogicalTypeUtils::dataTypeToString(const LogicalType& dataType) {
case LogicalTypeID::INT32:
case LogicalTypeID::INT16:
case LogicalTypeID::INT8:
case LogicalTypeID::UINT64:
case LogicalTypeID::UINT32:
case LogicalTypeID::UINT16:
case LogicalTypeID::UINT8:
case LogicalTypeID::DOUBLE:
case LogicalTypeID::FLOAT:
case LogicalTypeID::DATE:
Expand Down Expand Up @@ -529,6 +569,14 @@ std::string LogicalTypeUtils::dataTypeToString(LogicalTypeID dataTypeID) {
return "INT16";
case LogicalTypeID::INT8:
return "INT8";
case LogicalTypeID::UINT64:
return "UINT64";
case LogicalTypeID::UINT32:
return "UINT32";
case LogicalTypeID::UINT16:
return "UINT16";
case LogicalTypeID::UINT8:
return "UINT8";
case LogicalTypeID::DOUBLE:
return "DOUBLE";
case LogicalTypeID::FLOAT:
Expand Down Expand Up @@ -612,6 +660,10 @@ bool LogicalTypeUtils::isNumerical(const LogicalType& dataType) {
case LogicalTypeID::INT32:
case LogicalTypeID::INT16:
case LogicalTypeID::INT8:
case LogicalTypeID::UINT64:
case LogicalTypeID::UINT32:
case LogicalTypeID::UINT16:
case LogicalTypeID::UINT8:
case LogicalTypeID::DOUBLE:
case LogicalTypeID::FLOAT:
case LogicalTypeID::SERIAL:
Expand All @@ -638,6 +690,8 @@ std::vector<LogicalType> LogicalTypeUtils::getAllValidComparableLogicalTypes() {
return std::vector<LogicalType>{LogicalType{LogicalTypeID::BOOL},
LogicalType{LogicalTypeID::INT64}, LogicalType{LogicalTypeID::INT32},
LogicalType{LogicalTypeID::INT16}, LogicalType{LogicalTypeID::INT8},
LogicalType{LogicalTypeID::UINT64}, LogicalType{LogicalTypeID::UINT32},
LogicalType{LogicalTypeID::UINT16}, LogicalType{LogicalTypeID::UINT8},
LogicalType{LogicalTypeID::DOUBLE}, LogicalType{LogicalTypeID::FLOAT},
LogicalType{LogicalTypeID::DATE}, LogicalType{LogicalTypeID::TIMESTAMP},
LogicalType{LogicalTypeID::INTERVAL}, LogicalType{LogicalTypeID::BLOB},
Expand All @@ -646,7 +700,8 @@ std::vector<LogicalType> LogicalTypeUtils::getAllValidComparableLogicalTypes() {

std::vector<LogicalTypeID> LogicalTypeUtils::getNumericalLogicalTypeIDs() {
return std::vector<LogicalTypeID>{LogicalTypeID::INT64, LogicalTypeID::INT32,
LogicalTypeID::INT16, LogicalTypeID::INT8, LogicalTypeID::DOUBLE, LogicalTypeID::FLOAT,
LogicalTypeID::INT16, LogicalTypeID::INT8, LogicalTypeID::UINT64, LogicalTypeID::UINT32,
LogicalTypeID::UINT16, LogicalTypeID::UINT8, LogicalTypeID::DOUBLE, LogicalTypeID::FLOAT,
LogicalTypeID::SERIAL};
}

Expand All @@ -656,7 +711,9 @@ std::vector<LogicalType> LogicalTypeUtils::getAllValidLogicTypes() {
return std::vector<LogicalType>{LogicalType{LogicalTypeID::INTERNAL_ID},
LogicalType{LogicalTypeID::BOOL}, LogicalType{LogicalTypeID::INT64},
LogicalType{LogicalTypeID::INT32}, LogicalType{LogicalTypeID::INT16},
LogicalType{LogicalTypeID::INT8}, LogicalType{LogicalTypeID::DOUBLE},
LogicalType{LogicalTypeID::INT8}, LogicalType{LogicalTypeID::UINT64},
LogicalType{LogicalTypeID::UINT32}, LogicalType{LogicalTypeID::UINT16},
LogicalType{LogicalTypeID::UINT8}, LogicalType{LogicalTypeID::DOUBLE},
LogicalType{LogicalTypeID::STRING}, LogicalType{LogicalTypeID::BLOB},
LogicalType{LogicalTypeID::DATE}, LogicalType{LogicalTypeID::TIMESTAMP},
LogicalType{LogicalTypeID::INTERVAL}, LogicalType{LogicalTypeID::VAR_LIST},
Expand Down
84 changes: 84 additions & 0 deletions src/common/types/value/value.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,14 @@ Value Value::createDefaultValue(const LogicalType& dataType) {
return Value((int16_t)0);
case LogicalTypeID::INT8:
return Value((int8_t)0);
case LogicalTypeID::UINT64:
return Value((uint64_t)0);
case LogicalTypeID::UINT32:
return Value((uint32_t)0);
case LogicalTypeID::UINT16:
return Value((uint16_t)0);
case LogicalTypeID::UINT8:
return Value((uint8_t)0);
case LogicalTypeID::BOOL:
return Value(true);
case LogicalTypeID::DOUBLE:
Expand Down Expand Up @@ -128,6 +136,26 @@ Value::Value(int64_t val_) : isNull_{false} {
val.int64Val = val_;
}

Value::Value(uint8_t val_) : isNull_{false} {
dataType = std::make_unique<LogicalType>(LogicalTypeID::UINT8);
val.uint8Val = val_;
}

Value::Value(uint16_t val_) : isNull_{false} {
dataType = std::make_unique<LogicalType>(LogicalTypeID::UINT16);
val.uint16Val = val_;
}

Value::Value(uint32_t val_) : isNull_{false} {
dataType = std::make_unique<LogicalType>(LogicalTypeID::UINT32);
val.uint32Val = val_;
}

Value::Value(uint64_t val_) : isNull_{false} {
dataType = std::make_unique<LogicalType>(LogicalTypeID::UINT64);
val.uint64Val = val_;
}

Value::Value(float_t val_) : isNull_{false} {
dataType = std::make_unique<LogicalType>(LogicalTypeID::FLOAT);
val.floatVal = val_;
Expand Down Expand Up @@ -202,6 +230,18 @@ void Value::copyValueFrom(const uint8_t* value) {
case LogicalTypeID::INT8: {
val.int8Val = *((int8_t*)value);
} break;
case LogicalTypeID::UINT64: {
val.uint64Val = *((uint64_t*)value);
} break;
case LogicalTypeID::UINT32: {
val.uint32Val = *((uint32_t*)value);
} break;
case LogicalTypeID::UINT16: {
val.uint16Val = *((uint16_t*)value);
} break;
case LogicalTypeID::UINT8: {
val.uint8Val = *((uint8_t*)value);
} break;
case LogicalTypeID::BOOL: {
val.booleanVal = *((bool*)value);
} break;
Expand Down Expand Up @@ -268,6 +308,18 @@ void Value::copyValueFrom(const Value& other) {
case PhysicalTypeID::INT8: {
val.int8Val = other.val.int8Val;
} break;
case PhysicalTypeID::UINT64: {
val.uint64Val = other.val.uint64Val;
} break;
case PhysicalTypeID::UINT32: {
val.uint32Val = other.val.uint32Val;
} break;
case PhysicalTypeID::UINT16: {
val.uint16Val = other.val.uint16Val;
} break;
case PhysicalTypeID::UINT8: {
val.uint8Val = other.val.uint8Val;
} break;
case PhysicalTypeID::DOUBLE: {
val.doubleVal = other.val.doubleVal;
} break;
Expand Down Expand Up @@ -312,6 +364,14 @@ std::string Value::toString() const {
return TypeUtils::toString(val.int16Val);
case LogicalTypeID::INT8:
return TypeUtils::toString(val.int8Val);
case LogicalTypeID::UINT64:
return TypeUtils::toString(val.uint64Val);
case LogicalTypeID::UINT32:
return TypeUtils::toString(val.uint32Val);
case LogicalTypeID::UINT16:
return TypeUtils::toString(val.uint16Val);
case LogicalTypeID::UINT8:
return TypeUtils::toString(val.uint8Val);
case LogicalTypeID::DOUBLE:
return TypeUtils::toString(val.doubleVal);
case LogicalTypeID::FLOAT:
Expand Down Expand Up @@ -509,6 +569,18 @@ void Value::serialize(FileInfo* fileInfo, uint64_t& offset) const {
case PhysicalTypeID::INT8: {
SerDeser::serializeValue(val.int8Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT64: {
SerDeser::serializeValue(val.uint64Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT32: {
SerDeser::serializeValue(val.uint32Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT16: {
SerDeser::serializeValue(val.uint16Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT8: {
SerDeser::serializeValue(val.uint8Val, fileInfo, offset);
} break;
case PhysicalTypeID::DOUBLE: {
SerDeser::serializeValue(val.doubleVal, fileInfo, offset);
} break;
Expand Down Expand Up @@ -559,6 +631,18 @@ std::unique_ptr<Value> Value::deserialize(FileInfo* fileInfo, uint64_t& offset)
case PhysicalTypeID::INT8: {
SerDeser::deserializeValue(val->val.int8Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT64: {
SerDeser::deserializeValue(val->val.uint64Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT32: {
SerDeser::deserializeValue(val->val.uint32Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT16: {
SerDeser::deserializeValue(val->val.uint16Val, fileInfo, offset);
} break;
case PhysicalTypeID::UINT8: {
SerDeser::deserializeValue(val->val.uint8Val, fileInfo, offset);
} break;
case PhysicalTypeID::DOUBLE: {
SerDeser::deserializeValue(val->val.doubleVal, fileInfo, offset);
} break;
Expand Down
30 changes: 28 additions & 2 deletions src/common/vector/value_vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,18 @@ void ValueVector::copyFromValue(uint64_t pos, const Value& value) {
case PhysicalTypeID::INT8: {
memcpy(dstValue, &value.val.int8Val, numBytesPerValue);
} break;
case PhysicalTypeID::UINT64: {
memcpy(dstValue, &value.val.uint64Val, numBytesPerValue);
} break;
case PhysicalTypeID::UINT32: {
memcpy(dstValue, &value.val.uint32Val, numBytesPerValue);
} break;
case PhysicalTypeID::UINT16: {
memcpy(dstValue, &value.val.uint16Val, numBytesPerValue);
} break;
case PhysicalTypeID::UINT8: {
memcpy(dstValue, &value.val.uint8Val, numBytesPerValue);
} break;
case PhysicalTypeID::DOUBLE: {
memcpy(dstValue, &value.val.doubleVal, numBytesPerValue);
} break;
Expand Down Expand Up @@ -234,6 +246,18 @@ std::unique_ptr<Value> ValueVector::getAsValue(uint64_t pos) {
case PhysicalTypeID::INT8: {
value->val.int8Val = getValue<int8_t>(pos);
} break;
case PhysicalTypeID::UINT64: {
value->val.uint64Val = getValue<uint64_t>(pos);
} break;
case PhysicalTypeID::UINT32: {
value->val.uint32Val = getValue<uint32_t>(pos);
} break;
case PhysicalTypeID::UINT16: {
value->val.uint16Val = getValue<uint16_t>(pos);
} break;
case PhysicalTypeID::UINT8: {
value->val.uint8Val = getValue<uint8_t>(pos);
} break;
case PhysicalTypeID::DOUBLE: {
value->val.doubleVal = getValue<double_t>(pos);
} break;
Expand Down Expand Up @@ -354,14 +378,16 @@ template void ValueVector::setValue<int64_t>(uint32_t pos, int64_t val);
template void ValueVector::setValue<int32_t>(uint32_t pos, int32_t val);
template void ValueVector::setValue<int16_t>(uint32_t pos, int16_t val);
template void ValueVector::setValue<int8_t>(uint32_t pos, int8_t val);
template void ValueVector::setValue<uint64_t>(uint32_t pos, uint64_t val);
template void ValueVector::setValue<uint32_t>(uint32_t pos, uint32_t val);
template void ValueVector::setValue<uint16_t>(uint32_t pos, uint16_t val);
template void ValueVector::setValue<uint8_t>(uint32_t pos, uint8_t val);
template void ValueVector::setValue<double_t>(uint32_t pos, double_t val);
template void ValueVector::setValue<float_t>(uint32_t pos, float_t val);
template void ValueVector::setValue<hash_t>(uint32_t pos, hash_t val);
template void ValueVector::setValue<date_t>(uint32_t pos, date_t val);
template void ValueVector::setValue<timestamp_t>(uint32_t pos, timestamp_t val);
template void ValueVector::setValue<interval_t>(uint32_t pos, interval_t val);
template void ValueVector::setValue<list_entry_t>(uint32_t pos, list_entry_t val);
template void ValueVector::setValue<vector_idx_t>(uint32_t pos, vector_idx_t val);

template<>
void ValueVector::setValue(uint32_t pos, ku_string_t val) {
Expand Down
Loading

0 comments on commit e3fb017

Please sign in to comment.