mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 18:12:02 +00:00
dbms: fixed error with OLAP compatibility layer [#METRIKASUPP-6363].
This commit is contained in:
parent
0940f17410
commit
84f4f31892
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
#include <Poco/NumberParser.h>
|
|
||||||
#include <Poco/StringTokenizer.h>
|
#include <Poco/StringTokenizer.h>
|
||||||
#include <Poco/ByteOrder.h>
|
#include <Poco/ByteOrder.h>
|
||||||
|
|
||||||
#include <DB/IO/WriteHelpers.h>
|
#include <DB/IO/WriteHelpers.h>
|
||||||
|
#include <DB/IO/ReadHelpers.h>
|
||||||
|
|
||||||
#include <common/DateLUT.h>
|
#include <common/DateLUT.h>
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ struct AttributeUIntBase : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return static_cast<BinaryData>(Poco::NumberParser::parseUnsigned64(s));
|
return static_cast<BinaryData>(DB::parse<UInt64>(s));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ struct AttributeIntBase : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parse64(s);
|
return DB::parse<Int64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ struct UserNewnessInterval : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ struct UserReturnTimeInterval : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ struct UserVisitsPeriodInterval : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -262,8 +262,8 @@ typedef AttributeUIntBase IsYandex;
|
|||||||
typedef AttributeUIntBase UserID;
|
typedef AttributeUIntBase UserID;
|
||||||
typedef AttributeDateTimeBase UserIDCreateDateTime;
|
typedef AttributeDateTimeBase UserIDCreateDateTime;
|
||||||
typedef AttributeDateBase UserIDCreateDate;
|
typedef AttributeDateBase UserIDCreateDate;
|
||||||
typedef AttributeUIntBase UserIDAge;
|
typedef AttributeIntBase UserIDAge;
|
||||||
typedef AttributeUIntBase UserIDAgeInterval;
|
typedef AttributeIntBase UserIDAgeInterval;
|
||||||
typedef AttributeUIntBase TotalVisits;
|
typedef AttributeUIntBase TotalVisits;
|
||||||
typedef AttributeUIntBase TotalVisitsInterval;
|
typedef AttributeUIntBase TotalVisitsInterval;
|
||||||
typedef AttributeUIntBase Age;
|
typedef AttributeUIntBase Age;
|
||||||
@ -278,8 +278,8 @@ struct DotNet : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, ".");
|
Poco::StringTokenizer tokenizer(s, ".");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 8)
|
||||||
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8) + Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
: ((DB::parse<UInt64>(tokenizer[0]) << 8) + DB::parse<UInt64>(tokenizer[1])));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ struct DotNetMajor : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -299,8 +299,8 @@ struct Flash : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, ".");
|
Poco::StringTokenizer tokenizer(s, ".");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 8)
|
||||||
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8) + Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
: ((DB::parse<UInt64>(tokenizer[0]) << 8) + DB::parse<UInt64>(tokenizer[1])));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ struct FlashExists : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ struct FlashMajor : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -330,18 +330,18 @@ struct Silverlight : public IAttributeMetadata
|
|||||||
Poco::StringTokenizer tokenizer(s, ".");
|
Poco::StringTokenizer tokenizer(s, ".");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1
|
: (tokenizer.count() == 1
|
||||||
? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
? (DB::parse<UInt64>(tokenizer[0]) << 56)
|
||||||
: (tokenizer.count() == 2
|
: (tokenizer.count() == 2
|
||||||
? ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
? ((DB::parse<UInt64>(tokenizer[0]) << 56)
|
||||||
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48))
|
| (DB::parse<UInt64>(tokenizer[1]) << 48))
|
||||||
: (tokenizer.count() == 3
|
: (tokenizer.count() == 3
|
||||||
? ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
? ((DB::parse<UInt64>(tokenizer[0]) << 56)
|
||||||
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48)
|
| (DB::parse<UInt64>(tokenizer[1]) << 48)
|
||||||
| (Poco::NumberParser::parseUnsigned64(tokenizer[2]) << 16))
|
| (DB::parse<UInt64>(tokenizer[2]) << 16))
|
||||||
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 56)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 56)
|
||||||
| (Poco::NumberParser::parseUnsigned64(tokenizer[1]) << 48)
|
| (DB::parse<UInt64>(tokenizer[1]) << 48)
|
||||||
| (Poco::NumberParser::parseUnsigned64(tokenizer[2]) << 16)
|
| (DB::parse<UInt64>(tokenizer[2]) << 16)
|
||||||
| Poco::NumberParser::parseUnsigned64(tokenizer[3])))));
|
| DB::parse<UInt64>(tokenizer[3])))));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -382,16 +382,16 @@ struct ClientIP : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, ".");
|
Poco::StringTokenizer tokenizer(s, ".");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: (tokenizer.count() == 2 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 16)
|
||||||
: (tokenizer.count() == 3 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: (tokenizer.count() == 3 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 16)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[2]) << 8)
|
+ (DB::parse<UInt64>(tokenizer[2]) << 8)
|
||||||
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 16)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[2]) << 8)
|
+ (DB::parse<UInt64>(tokenizer[2]) << 8)
|
||||||
+ Poco::NumberParser::parseUnsigned(tokenizer[3])))));
|
+ DB::parse<UInt64>(tokenizer[3])))));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -402,12 +402,12 @@ struct Resolution : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, "x");
|
Poco::StringTokenizer tokenizer(s, "x");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: (tokenizer.count() == 2 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 8)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 8)
|
||||||
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 24)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 8)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 8)
|
||||||
+ Poco::NumberParser::parseUnsigned(tokenizer[2]))));
|
+ DB::parse<UInt64>(tokenizer[2]))));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -418,9 +418,9 @@ struct ResolutionWidthHeight : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, "x");
|
Poco::StringTokenizer tokenizer(s, "x");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
+ DB::parse<UInt64>(tokenizer[1])));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -429,7 +429,7 @@ struct ResolutionWidth : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ struct ResolutionHeight : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -450,7 +450,7 @@ struct ResolutionColor : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -461,9 +461,9 @@ struct WindowClientArea : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, "x");
|
Poco::StringTokenizer tokenizer(s, "x");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
: ((Poco::NumberParser::parseUnsigned64(tokenizer[0]) << 16)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
+ DB::parse<UInt64>(tokenizer[1])));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -484,11 +484,11 @@ struct UserAgent : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, " .");
|
Poco::StringTokenizer tokenizer(s, " .");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
: (tokenizer.count() == 2 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
: (tokenizer.count() == 2 ? (DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 16)
|
||||||
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 24)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 24)
|
||||||
+ (Poco::NumberParser::parseUnsigned(tokenizer[1]) << 16)
|
+ (DB::parse<UInt64>(tokenizer[1]) << 16)
|
||||||
+ (static_cast<UInt32>(tokenizer[2][1]) << 8)
|
+ (static_cast<UInt32>(tokenizer[2][1]) << 8)
|
||||||
+ (tokenizer[2][0]))));
|
+ (tokenizer[2][0]))));
|
||||||
}
|
}
|
||||||
@ -501,8 +501,8 @@ struct UserAgentVersion : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, ".");
|
Poco::StringTokenizer tokenizer(s, ".");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 16)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 16)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 16)
|
||||||
+ (static_cast<UInt32>(tokenizer[1][1]) << 8)
|
+ (static_cast<UInt32>(tokenizer[1][1]) << 8)
|
||||||
+ tokenizer[1][0]));
|
+ tokenizer[1][0]));
|
||||||
}
|
}
|
||||||
@ -515,9 +515,9 @@ struct UserAgentMajor : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
Poco::StringTokenizer tokenizer(s, " ");
|
Poco::StringTokenizer tokenizer(s, " ");
|
||||||
return tokenizer.count() == 0 ? 0
|
return tokenizer.count() == 0 ? 0
|
||||||
: (tokenizer.count() == 1 ? (Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
: (tokenizer.count() == 1 ? (DB::parse<UInt64>(tokenizer[0]) << 8)
|
||||||
: ((Poco::NumberParser::parseUnsigned(tokenizer[0]) << 8)
|
: ((DB::parse<UInt64>(tokenizer[0]) << 8)
|
||||||
+ Poco::NumberParser::parseUnsigned(tokenizer[1])));
|
+ DB::parse<UInt64>(tokenizer[1])));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -526,7 +526,7 @@ struct UserAgentID : public IAttributeMetadata
|
|||||||
{
|
{
|
||||||
BinaryData parse(const std::string & s) const
|
BinaryData parse(const std::string & s) const
|
||||||
{
|
{
|
||||||
return Poco::NumberParser::parseUnsigned(s);
|
return DB::parse<UInt64>(s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -542,12 +542,12 @@ typedef AttributeUIntBase ClickDomainID;
|
|||||||
typedef AttributeUIntBase ClickCost;
|
typedef AttributeUIntBase ClickCost;
|
||||||
typedef AttributeHashBase ClickURLHash;
|
typedef AttributeHashBase ClickURLHash;
|
||||||
typedef AttributeUIntBase ClickOrderID;
|
typedef AttributeUIntBase ClickOrderID;
|
||||||
typedef AttributeUIntBase GoalReachesAny;
|
typedef AttributeIntBase GoalReachesAny;
|
||||||
typedef AttributeUIntBase GoalReachesDepth;
|
typedef AttributeIntBase GoalReachesDepth;
|
||||||
typedef AttributeUIntBase GoalReachesURL;
|
typedef AttributeIntBase GoalReachesURL;
|
||||||
typedef AttributeUIntBase ConvertedAny;
|
typedef AttributeIntBase ConvertedAny;
|
||||||
typedef AttributeUIntBase ConvertedDepth;
|
typedef AttributeIntBase ConvertedDepth;
|
||||||
typedef AttributeUIntBase ConvertedURL;
|
typedef AttributeIntBase ConvertedURL;
|
||||||
typedef AttributeUIntBase GoalReaches;
|
typedef AttributeUIntBase GoalReaches;
|
||||||
typedef AttributeUIntBase Converted;
|
typedef AttributeUIntBase Converted;
|
||||||
typedef AttributeUIntBase CounterID;
|
typedef AttributeUIntBase CounterID;
|
||||||
@ -567,7 +567,7 @@ struct Interests : public IAttributeMetadata
|
|||||||
= make_split_iterator(s, token_finder(is_any_of(","),
|
= make_split_iterator(s, token_finder(is_any_of(","),
|
||||||
token_compress_on)); i != split_iterator<std::string::const_iterator>(); ++i)
|
token_compress_on)); i != split_iterator<std::string::const_iterator>(); ++i)
|
||||||
{
|
{
|
||||||
UInt16 interest = Poco::NumberParser::parseUnsigned(boost::copy_range<std::string>(*i));
|
UInt16 interest = DB::parse<UInt64>(boost::copy_range<std::string>(*i));
|
||||||
value |= (interest == 0x2000 ? 0x2000 :
|
value |= (interest == 0x2000 ? 0x2000 :
|
||||||
(interest == 0x1000 ? 0x1000 :
|
(interest == 0x1000 ? 0x1000 :
|
||||||
(interest == 0x800 ? 0x800 :
|
(interest == 0x800 ? 0x800 :
|
||||||
|
Loading…
Reference in New Issue
Block a user