10#include <userver/storages/postgres/detail/db_data_type_name.hpp>
12USERVER_NAMESPACE_BEGIN
18using Oid =
unsigned int;
19inline constexpr Oid kInvalidOid = 0;
23using Smallint = std::int16_t;
24using Integer = std::int32_t;
25using Bigint = std::int64_t;
35 const std::string_view schema;
36 const std::string_view name;
38 constexpr DBTypeName()
42 explicit constexpr DBTypeName(std::pair<std::string_view, std::string_view> n)
53 constexpr DBTypeName(std::string_view s, std::string_view n)
58 bool operator==(
const DBTypeName& rhs)
const {
return name == rhs.name && schema == rhs.schema; }
60 auto schema_cmp = schema.compare(rhs.schema);
63 }
else if (schema_cmp == 0) {
64 return name < rhs.name;
69 bool Empty()
const {
return name.empty(); }
70 std::size_t GetHash()
const;
71 std::string ToString()
const;
79 enum class TypeClass :
char {
140 std::size_t GetNameHash()
const;
143 std::size_t operator()(
const DBTypeDescription& type)
const {
return type.GetNameHash(); }
151 using IntegralType = std::underlying_type_t<
TypeCategory>;
152 auto operator()(
TypeCategory val)
const {
return std::hash<IntegralType>{}(
static_cast<IntegralType>(val)); }
158 Oid owner{kInvalidOid};
160 Oid type{kInvalidOid};
183 kInvalid = kInvalidOid,
221 kMacaddrArray = 1040,
223 kMacaddr8Array = 775,
228 kBooleanArray = 1000,
239 kVarcharArray = 1015,
247 kPolygonArray = 1027,
250 kCstringArray = 1263,
258 kTimestampArray = 1115,
260 kTimestamptzArray = 1185,
262 kIntervalArray = 1187,
263 kNumericArray = 1231,
271 kRegprocedure = 2202,
277 kRegtypearray = 2211,
286 kRegdictionary = 3769,
297 kLanguageHandler = 2280,
306 kInt4RangeArray = 3905,
308 kNumRangeArray = 3907,
309 kTimestampRange = 3908,
310 kTimestampRangeArray = 3909,
311 kTimestamptzRange = 3910,
312 kTimestamptzRangeArray = 3911,
314 kDateRangeArray = 3913,
316 kInt8RangeArray = 3927,
320using PredefinedOid = std::integral_constant<
PredefinedOids, TypeOid>;
453 return static_cast<std::size_t>(value);
459 std::size_t operator()(
const USERVER_NAMESPACE::storages::
postgres::
DBTypeName& value)
const {
460 return value.GetHash();