summaryrefslogtreecommitdiff
path: root/lib/mysql_types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mysql_types.cpp')
-rw-r--r--lib/mysql_types.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/mysql_types.cpp b/lib/mysql_types.cpp
index a4641ba..41dbb6e 100644
--- a/lib/mysql_types.cpp
+++ b/lib/mysql_types.cpp
@@ -16,11 +16,11 @@ namespace MyGrate::MySQL {
#define INTEGER_TYPE(ET) \
typename Type<ET, false>::C Type<ET, false>::read(RawDataReader &, RawDataReader & data) \
{ \
- return data.readValue<typename Type<ET>::C>(); \
+ return data.readValue<typename Type<ET, false>::C>(); \
} \
typename Type<ET, true>::C Type<ET, true>::read(RawDataReader &, RawDataReader & data) \
{ \
- return data.readValue<typename Type<ET>::C>(); \
+ return data.readValue<typename Type<ET, true>::C>(); \
}
INTEGER_TYPE(MYSQL_TYPE_TINY);
INTEGER_TYPE(MYSQL_TYPE_SHORT);
@@ -138,7 +138,7 @@ namespace MyGrate::MySQL {
dt.hour = mod100_extract(dtint);
dt.day = mod100_extract(dtint);
dt.month = mod100_extract(dtint);
- dt.year = dtint;
+ dt.year = boost::numeric_cast<decltype(dt.year)>(dtint);
return dt;
}
@@ -149,7 +149,7 @@ namespace MyGrate::MySQL {
Time t {};
t.second = mod100_extract(tint);
t.minute = mod100_extract(tint);
- t.hour = tint;
+ t.hour = boost::numeric_cast<decltype(t.hour)>(tint);
return t;
}
@@ -164,9 +164,9 @@ namespace MyGrate::MySQL {
{
auto dint {data.readValue<uint32_t, 3>()};
Date d {};
- d.day = bitslice(dint, 0, 6);
- d.month = bitslice(dint, 6, 4);
- d.year = bitslice(dint, 10, 14);
+ d.day = bitslice<6>(dint, 0);
+ d.month = bitslice<4>(dint, 6);
+ d.year = bitslice<14>(dint, 10);
return d;
}
@@ -201,12 +201,12 @@ namespace MyGrate::MySQL {
std::reverse(r.b.begin(), r.b.end());
DateTime dt;
- dt.year = (bitslice(r.i, 22, 17) / 13);
- dt.month = (bitslice(r.i, 22, 17) % 13);
- dt.day = bitslice(r.i, 17, 5);
- dt.hour = bitslice(r.i, 12, 5);
- dt.minute = bitslice(r.i, 6, 6);
- dt.second = bitslice(r.i, 0, 6);
+ dt.year = boost::numeric_cast<decltype(dt.year)>(bitslice<17>(r.i, 22) / 13);
+ dt.month = boost::numeric_cast<decltype(dt.month)>(bitslice<17>(r.i, 22) % 13);
+ dt.day = bitslice<5>(r.i, 17);
+ dt.hour = bitslice<5>(r.i, 12);
+ dt.minute = bitslice<6>(r.i, 6);
+ dt.second = bitslice<6>(r.i, 0);
return dt;
}
}