userver: storages::postgres::io Namespace Reference
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
storages::postgres::io Namespace Reference

Detailed Description

uPg input-output.

Namespace containing classes and functions for defining datatype input-output and specifying mapping between C++ and PostgreSQL types.

Namespaces

namespace  traits
 uPg input-output traits.
 

Classes

struct  ArrayType
 
struct  ArrayType< PredefinedOids::kBit >
 
struct  ArrayType< PredefinedOids::kBoolean >
 
struct  ArrayType< PredefinedOids::kBox >
 
struct  ArrayType< PredefinedOids::kBpchar >
 
struct  ArrayType< PredefinedOids::kBytea >
 
struct  ArrayType< PredefinedOids::kChar >
 
struct  ArrayType< PredefinedOids::kCid >
 
struct  ArrayType< PredefinedOids::kCidr >
 
struct  ArrayType< PredefinedOids::kCircle >
 
struct  ArrayType< PredefinedOids::kDate >
 
struct  ArrayType< PredefinedOids::kDateRange >
 
struct  ArrayType< PredefinedOids::kFloat4 >
 
struct  ArrayType< PredefinedOids::kFloat8 >
 
struct  ArrayType< PredefinedOids::kInet >
 
struct  ArrayType< PredefinedOids::kInt2 >
 
struct  ArrayType< PredefinedOids::kInt4 >
 
struct  ArrayType< PredefinedOids::kInt4Range >
 
struct  ArrayType< PredefinedOids::kInt8 >
 
struct  ArrayType< PredefinedOids::kInt8Range >
 
struct  ArrayType< PredefinedOids::kInterval >
 
struct  ArrayType< PredefinedOids::kJson >
 
struct  ArrayType< PredefinedOids::kJsonb >
 
struct  ArrayType< PredefinedOids::kLine >
 
struct  ArrayType< PredefinedOids::kLseg >
 
struct  ArrayType< PredefinedOids::kLsn >
 
struct  ArrayType< PredefinedOids::kMacaddr >
 
struct  ArrayType< PredefinedOids::kMacaddr8 >
 
struct  ArrayType< PredefinedOids::kName >
 
struct  ArrayType< PredefinedOids::kNumeric >
 
struct  ArrayType< PredefinedOids::kNumRange >
 
struct  ArrayType< PredefinedOids::kOid >
 
struct  ArrayType< PredefinedOids::kPath >
 
struct  ArrayType< PredefinedOids::kPoint >
 
struct  ArrayType< PredefinedOids::kPolygon >
 
struct  ArrayType< PredefinedOids::kRecord >
 
struct  ArrayType< PredefinedOids::kText >
 
struct  ArrayType< PredefinedOids::kTid >
 
struct  ArrayType< PredefinedOids::kTime >
 
struct  ArrayType< PredefinedOids::kTimestamp >
 
struct  ArrayType< PredefinedOids::kTimestampRange >
 
struct  ArrayType< PredefinedOids::kTimestamptz >
 
struct  ArrayType< PredefinedOids::kTimestamptzRange >
 
struct  ArrayType< PredefinedOids::kUuid >
 
struct  ArrayType< PredefinedOids::kVarbit >
 
struct  ArrayType< PredefinedOids::kVarchar >
 
struct  ArrayType< PredefinedOids::kXid >
 
struct  BufferCategoryHash
 
struct  BufferFormatter
 Primary template for Postgre buffer formatter Specialisations should provide call operators that write to a buffer. More...
 
struct  BufferFormatter< ::utils::StrongTypedef< Tag, T, Ops, Enable > >
 
struct  BufferFormatter< AddressV4 >
 Binary formatter for utils::ip::AddressV4. More...
 
struct  BufferFormatter< AddressV6 >
 Binary formatter for utils::ip::AddressV6. More...
 
struct  BufferFormatter< Bigint >
 
struct  BufferFormatter< bool >
 
struct  BufferFormatter< boost::optional< T >, std::enable_if_t< traits::kHasFormatter< T > > >
 Formatter specialization for boost::optional. More...
 
struct  BufferFormatter< boost::uuids::uuid >
 
struct  BufferFormatter< char >
 
struct  BufferFormatter< char[N]>
 
struct  BufferFormatter< const char * >
 
struct  BufferFormatter< Date >
 Binary formatter for utils::datetime::Date. More...
 
struct  BufferFormatter< decimal64::Decimal< Prec, RoundPolicy > >
 
struct  BufferFormatter< detail::Interval >
 
struct  BufferFormatter< double >
 
struct  BufferFormatter< float >
 
struct  BufferFormatter< InetNetwork >
 Binary formatter for utils::ip::InetNetwork. More...
 
struct  BufferFormatter< Integer >
 
struct  BufferFormatter< Macaddr >
 Binary formatter for utils::macaddr:Macaddr. More...
 
struct  BufferFormatter< Macaddr8 >
 Binary formatter for utils::macaddr:Macaddr8. More...
 
struct  BufferFormatter< MultiPrecision< Precision > >
 
struct  BufferFormatter< NetworkV4 >
 Binary formatter for utils::ip::NetworkV4. More...
 
struct  BufferFormatter< NetworkV6 >
 Binary formatter for utils::ip::NetworkV6. More...
 
struct  BufferFormatter< Null< T > >
 
struct  BufferFormatter< postgres::BitStringWrapper< BitContainer, kBitStringType > >
 
struct  BufferFormatter< postgres::ByteaWrapper< ByteContainer >, traits::EnableIfByteaCompatible< std::decay_t< ByteContainer > > >
 
struct  BufferFormatter< postgres::detail::BitStringRefWrapper< BitContainerRef, postgres::detail::BitContainerInterface::kCommon, kBitStringType > >
 
struct  BufferFormatter< postgres::detail::BitStringRefWrapper< BitContainerRef, postgres::detail::BitContainerInterface::kFlags, kBitStringType > >
 
struct  BufferFormatter< postgres::detail::ByteaRefWrapper< ByteContainer >, traits::EnableIfByteaCompatible< std::decay_t< ByteContainer > > >
 
struct  BufferFormatter< Smallint >
 
struct  BufferFormatter< std::bitset< N > >
 
struct  BufferFormatter< std::chrono::time_point< ClockType, Duration > >
 Binary formatter for std::chrono::time_point. More...
 
struct  BufferFormatter< std::optional< T >, std::enable_if_t< traits::kHasFormatter< T > > >
 Formatter specialization for std::optional. More...
 
struct  BufferFormatter< std::string >
 
struct  BufferFormatter< std::string_view >
 
struct  BufferFormatter<::utils::datetime::TimeOfDay< Duration > >
 Binary formatter for utils::datetime::TimeOfDay mapped to postgres time This datatype is time-zone agnostic, it should't be mixed with timetz type or sudden TZ adjustments will be applied. More...
 
struct  BufferFormatter<::utils::OptionalRef< T >, std::enable_if_t< traits::kHasFormatter< T > > >
 Formatter specialization for utils::OptionalRef. More...
 
struct  BufferParser
 Primary template for Postgre buffer parser. Specialisations should provide call operators that parse FieldBuffer. More...
 
struct  BufferParser< ::utils::StrongTypedef< Tag, T, Ops, Enable > >
 
struct  BufferParser< AddressV4 >
 Binary parser for utils::ip::AddressV4. More...
 
struct  BufferParser< AddressV6 >
 Binary parser for utils::ip::AddressV6. More...
 
struct  BufferParser< Bigint >
 
struct  BufferParser< bool >
 
struct  BufferParser< boost::optional< T >, std::enable_if_t< traits::kHasParser< T > > >
 Parser specialization for boost::optional. More...
 
struct  BufferParser< boost::uuids::uuid >
 
struct  BufferParser< char >
 
struct  BufferParser< Date >
 Binary parser for utils::datetime::Date. More...
 
struct  BufferParser< decimal64::Decimal< Prec, RoundPolicy > >
 
struct  BufferParser< detail::Interval >
 
struct  BufferParser< double >
 
struct  BufferParser< float >
 
struct  BufferParser< InetNetwork >
 Binary parser for utils::ip::InetNetwork. More...
 
struct  BufferParser< Integer >
 
struct  BufferParser< Macaddr >
 Binary parser for utils::macaddr::Macaddr. More...
 
struct  BufferParser< Macaddr8 >
 Binary parser for utils::macaddr::Macaddr8. More...
 
struct  BufferParser< MultiPrecision< Precision > >
 
struct  BufferParser< NetworkV4 >
 Binary parser for utils::ip::NetworkV4. More...
 
struct  BufferParser< NetworkV6 >
 Binary parser for utils::ip::NetworkV6. More...
 
struct  BufferParser< postgres::BitStringWrapper< BitContainer, kBitStringType > >
 
struct  BufferParser< postgres::ByteaWrapper< ByteContainer >, traits::EnableIfByteaCompatible< std::decay_t< ByteContainer > > >
 
struct  BufferParser< postgres::detail::BitStringRefWrapper< BitContainerRef, postgres::detail::BitContainerInterface::kCommon, kBitStringType > >
 
struct  BufferParser< postgres::detail::BitStringRefWrapper< BitContainerRef, postgres::detail::BitContainerInterface::kFlags, kBitStringType > >
 
struct  BufferParser< postgres::detail::ByteaRefWrapper< ByteContainer >, traits::EnableIfByteaCompatible< std::decay_t< ByteContainer > > >
 
struct  BufferParser< Smallint >
 
struct  BufferParser< std::bitset< N > >
 
struct  BufferParser< std::chrono::time_point< ClockType, Duration > >
 Binary parser for std::chrono::time_point. More...
 
struct  BufferParser< std::optional< T >, std::enable_if_t< traits::kHasParser< T > > >
 Parser specialization for std::optional. More...
 
struct  BufferParser< std::string >
 
struct  BufferParser< std::string_view >
 
struct  BufferParser<::utils::datetime::TimeOfDay< Duration > >
 Binary parser for utils::datetime::TimeOfDay mapped to postgres time. More...
 
struct  CppToPg
 Detect mapping of a C++ type to Postgres type. More...
 
struct  CppToPg< boost::optional< T >, std::enable_if_t< traits::kIsMappedToPg< T > > >
 Pg mapping specialization for boost::optional. More...
 
struct  CppToPg< Null< T > >
 
struct  CppToPg< std::optional< T >, std::enable_if_t< traits::kIsMappedToPg< T > > >
 Pg mapping specialization for std::optional. More...
 
struct  CppToPg< T, std::enable_if_t<!traits::kIsSpecialMapping< T > &&traits::kIsMappedToPg< T > &&!traits::kIsMappedToArray< T > > >
 
struct  CppToPg< T, traits::EnableIfCanUseEnumAsStrongTypedef< T > >
 
struct  CppToPg<::utils::OptionalRef< T >, std::enable_if_t< traits::kIsMappedToPg< T > > >
 Pg mapping specialization for USERVER_NAMESPACE::utils::OptionalRef. More...
 
struct  CppToPg<::utils::StrongTypedef< Tag, T, Ops, Enable >, std::enable_if_t<!traits::kIsStrongTypedefDirectlyMapped< Tag, T, Ops, Enable > &&traits::kIsMappedToPg< T > > >
 
struct  CppToSystemPg
 Primary template for declaring mapping to a PostgreSQL system type. More...
 
struct  CppToSystemPg< AddressV4 >
 
struct  CppToSystemPg< AddressV6 >
 
struct  CppToSystemPg< Bigint >
 
struct  CppToSystemPg< BigintRange >
 
struct  CppToSystemPg< bool >
 
struct  CppToSystemPg< boost::uuids::uuid >
 
struct  CppToSystemPg< BoundedBigintRange >
 
struct  CppToSystemPg< BoundedIntegerRange >
 
struct  CppToSystemPg< char >
 
struct  CppToSystemPg< char[N]>
 
struct  CppToSystemPg< const char * >
 
struct  CppToSystemPg< Date >
 
struct  CppToSystemPg< decimal64::Decimal< Prec, RoundPolicy > >
 
struct  CppToSystemPg< detail::Box >
 
struct  CppToSystemPg< detail::Circle >
 
struct  CppToSystemPg< detail::Interval >
 
struct  CppToSystemPg< detail::Line >
 
struct  CppToSystemPg< detail::LineSegment >
 
struct  CppToSystemPg< detail::Path >
 
struct  CppToSystemPg< detail::Point >
 
struct  CppToSystemPg< detail::Polygon >
 
struct  CppToSystemPg< double >
 
struct  CppToSystemPg< float >
 
struct  CppToSystemPg< formats::json::Value >
 
struct  CppToSystemPg< InetNetwork >
 
struct  CppToSystemPg< Integer >
 
struct  CppToSystemPg< IntegerRange >
 
struct  CppToSystemPg< Macaddr >
 
struct  CppToSystemPg< Macaddr8 >
 
struct  CppToSystemPg< MultiPrecision< Precision > >
 
struct  CppToSystemPg< NetworkV4 >
 
struct  CppToSystemPg< NetworkV6 >
 
struct  CppToSystemPg< PlainJson >
 
struct  CppToSystemPg< postgres::BitStringWrapper< BitContainer, postgres::BitStringType::kBit > >
 
struct  CppToSystemPg< postgres::BitStringWrapper< BitContainer, postgres::BitStringType::kBitVarying > >
 
struct  CppToSystemPg< postgres::ByteaWrapper< ByteContainer > >
 
struct  CppToSystemPg< postgres::detail::BitStringRefWrapper< BitContainer, kContainerInterface, postgres::BitStringType::kBit > >
 
struct  CppToSystemPg< postgres::detail::BitStringRefWrapper< BitContainer, kContainerInterface, postgres::BitStringType::kBitVarying > >
 
struct  CppToSystemPg< postgres::detail::ByteaRefWrapper< ByteContainer > >
 
struct  CppToSystemPg< Smallint >
 
struct  CppToSystemPg< std::bitset< N > >
 
struct  CppToSystemPg< std::chrono::duration< Rep, Period > >
 
struct  CppToSystemPg< std::chrono::time_point< ClockType, Duration > >
 
struct  CppToSystemPg< std::string >
 
struct  CppToSystemPg< std::string_view >
 
struct  CppToSystemPg< TimePointTz >
 
struct  CppToSystemPg<::utils::datetime::TimeOfDay< Duration > >
 
struct  CppToUserPg
 Primary template for declaring mapping to a PostgreSQL user type. More...
 
struct  EnumMappingBase
 
struct  FieldBuffer
 
struct  PgToCpp
 
struct  RowType
 
struct  TransformFormatter
 
struct  TransformParser
 

Typedefs

template<PredefinedOids TypeOid>
using PredefinedOid = std::integral_constant<PredefinedOids, TypeOid>
 
template<BufferCategory Category>
using BufferCategoryConstant = std::integral_constant<BufferCategory, Category>
 
using TypeBufferCategory = std::unordered_map<Oid, BufferCategory>
 

Enumerations

enum class  PredefinedOids {
  kInvalid = kInvalidOid ,
  kBoolean = 16 ,
  kBytea = 17 ,
  kChar = 18 ,
  kName = 19 ,
  kInt8 = 20 ,
  kInt2 = 21 ,
  kInt2Vector = 22 ,
  kInt4 = 23 ,
  kRegproc = 24 ,
  kText = 25 ,
  kOid = 26 ,
  kTid = 27 ,
  kXid = 28 ,
  kCid = 29 ,
  kOidVector = 30 ,
  kJson = 114 ,
  kJsonArray = 199 ,
  kXml = 142 ,
  kPgNodeTree = 194 ,
  kPgDdlCommand = 32 ,
  kPoint = 600 ,
  kLseg = 601 ,
  kPath = 602 ,
  kBox = 603 ,
  kPolygon = 604 ,
  kLine = 628 ,
  kLineArray = 629 ,
  kFloat4 = 700 ,
  kFloat8 = 701 ,
  kAbstime = 702 ,
  kReltime = 703 ,
  kTinterval = 704 ,
  kUnknown = 705 ,
  kCircle = 718 ,
  kCircleArray = 719 ,
  kCash = 790 ,
  kMacaddr = 829 ,
  kMacaddrArray = 1040 ,
  kMacaddr8 = 774 ,
  kMacaddr8Array = 775 ,
  kInet = 869 ,
  kInetArray = 1041 ,
  kCidr = 650 ,
  kCidrArray = 651 ,
  kBooleanArray = 1000 ,
  kByteaArray = 1001 ,
  kCharArray = 1002 ,
  kNameArray = 1003 ,
  kInt2Array = 1005 ,
  kInt4Array = 1007 ,
  kTextArray = 1009 ,
  kTidArray = 1010 ,
  kXidArray = 1011 ,
  kCidArray = 1012 ,
  kBphcarArray = 1014 ,
  kVarcharArray = 1015 ,
  kInt8Array = 1016 ,
  kPointArray = 1017 ,
  kLsegArray = 1018 ,
  kPathArray = 1019 ,
  kBoxArray = 1020 ,
  kFloat4Array = 1021 ,
  kFloat8Array = 1022 ,
  kPolygonArray = 1027 ,
  kOidArray = 1028 ,
  kAclItem = 1033 ,
  kCstringArray = 1263 ,
  kBpchar = 1042 ,
  kVarchar = 1043 ,
  kDate = 1082 ,
  kTime = 1083 ,
  kDateArray = 1182 ,
  kTimeArray = 1183 ,
  kTimestamp = 1114 ,
  kTimestampArray = 1115 ,
  kTimestamptz = 1184 ,
  kTimestamptzArray = 1185 ,
  kInterval = 1186 ,
  kIntervalArray = 1187 ,
  kNumericArray = 1231 ,
  kTimetz = 1266 ,
  kBit = 1560 ,
  kBitArray = 1561 ,
  kVarbit = 1562 ,
  kVarbitArray = 1563 ,
  kNumeric = 1700 ,
  kRefcursor = 1790 ,
  kRegprocedure = 2202 ,
  kRegoper = 2203 ,
  kRegoperator = 2204 ,
  kRegclass = 2205 ,
  kRegtype = 2206 ,
  kRegrole = 4096 ,
  kRegtypearray = 2211 ,
  kUuid = 2950 ,
  kUuidArray = 2951 ,
  kLsn = 3220 ,
  kLsnArray = 3221 ,
  kTsvector = 3614 ,
  kGtsvector = 3642 ,
  kTsquery = 3615 ,
  kRegconfig = 3734 ,
  kRegdictionary = 3769 ,
  kJsonb = 3802 ,
  kJsonbArray = 3807 ,
  kRecord = 2249 ,
  kRecordArray = 2287 ,
  kCstring = 2275 ,
  kAny = 2276 ,
  kAnyArray = 2277 ,
  kVoid = 2278 ,
  kTrigger = 2279 ,
  kEvttrigger = 3838 ,
  kLanguageHandler = 2280 ,
  kInternal = 2281 ,
  kOpaque = 2282 ,
  kAnyElement = 2283 ,
  kAnyNonArray = 2776 ,
  kAnyEnum = 3500 ,
  kFdwHandler = 3115 ,
  kAnyRange = 3831 ,
  kInt4Range = 3904 ,
  kInt4RangeArray = 3905 ,
  kNumRange = 3906 ,
  kNumRangeArray = 3907 ,
  kTimestampRange = 3908 ,
  kTimestampRangeArray = 3909 ,
  kTimestamptzRange = 3910 ,
  kTimestamptzRangeArray = 3911 ,
  kDateRange = 3912 ,
  kDateRangeArray = 3913 ,
  kInt8Range = 3926 ,
  kInt8RangeArray = 3927
}
 
enum class  BufferCategory {
  kKeepCategory = -1 ,
  kNoParser = 0 ,
  kVoid ,
  kPlainBuffer ,
  kArrayBuffer ,
  kCompositeBuffer ,
  kRangeBuffer
}
 

Functions

template<typename T >
constexpr bool IsTypeMappedToSystemArray ()
 
template<typename Container >
detail::ContainerSplitter< Container > SplitContainer (const Container &container, std::size_t chunk_elements)
 
template<typename Container >
detail::ContainerByColumnsSplitter< Container > SplitContainerByColumns (const Container &container, std::size_t chunk_elements)
 
template<typename T >
void ReadBuffer (const FieldBuffer &buffer, T &&value)
 Read a value from input buffer.
 
template<typename T >
void ReadBuffer (const FieldBuffer &buffer, T &&value, const TypeBufferCategory &categories)
 
template<typename T >
traits::IO< T >::FormatterType BufferWriter (const T &value)
 
template<typename T , typename Buffer >
void WriteBuffer (const UserTypes &types, Buffer &buffer, const T &value)
 
template<typename T >
std::size_t ReadRawBinary (FieldBuffer buffer, T &value, const TypeBufferCategory &categories)
 
template<typename T , typename Buffer >
void WriteRawBinary (const UserTypes &types, Buffer &buffer, const T &value, Oid replace_oid=kInvalidOid)
 
const std::string & ToString (BufferCategory)
 
BufferCategory GetTypeBufferCategory (const TypeBufferCategory &, Oid)
 
bool HasParser (PredefinedOids)
 Find out if a parser for a predefined Postgres type was registered.
 
bool MappedToSameType (PredefinedOids, PredefinedOids)
 Find out if predefined Postgres types are mapped to the same cpp type.
 
PredefinedOids GetArrayElementOid (PredefinedOids)
 Get array element oid for a predefined type.
 
BufferCategory GetBufferCategory (PredefinedOids)
 Get the buffer category for a predefined type.
 
bool HasParser (DBTypeName)
 
template<typename T >
constexpr bool IsTypeMappedToSystem ()
 
void LogRegisteredTypes ()
 

Variables

constexpr int kPgBinaryDataFormat = 1
 
constexpr Integer kPgNullBufferSize = -1
 Fields that are null are denoted by specifying their length == -1.
 

Typedef Documentation

◆ BufferCategoryConstant

template<BufferCategory Category>
using storages::postgres::io::BufferCategoryConstant = std::integral_constant<BufferCategory, Category>

Definition at line 38 of file traits.hpp.

◆ PredefinedOid

template<PredefinedOids TypeOid>
using storages::postgres::io::PredefinedOid = std::integral_constant<PredefinedOids, TypeOid>

Definition at line 328 of file pg_types.hpp.

◆ TypeBufferCategory

using storages::postgres::io::TypeBufferCategory = std::unordered_map<Oid, BufferCategory>

Definition at line 40 of file traits.hpp.

Enumeration Type Documentation

◆ BufferCategory

Category of buffer contents.

Applied to binary parsers and deduced from field's data type.

Enumerator
kKeepCategory 

kKeepCategory keep current buffer category

kNoParser 

kNoParser the data type doesn't have a parser defined

kVoid 

kVoid there won't be a buffer for this field, but the category is required for correctly handling void results

kPlainBuffer 

kPlainBuffer the buffer is a single plain value

kArrayBuffer 

kArrayBuffer the buffer contains an array of values

kCompositeBuffer 

kCompositeBuffer the buffer contains a user-defined composite type

kRangeBuffer 

kRangeBuffer the buffer contains a range type

Definition at line 23 of file traits.hpp.

◆ PredefinedOids

Oids are predefined for postgres fundamental types Constants can be found here https://github.com/postgres/postgres/blob/master/src/include/catalog/pg_type.dat Oid values can also be retrieved from PostgreSQL instance by running query

select t.oid as "Oid", pg_catalog.format_type(t.oid, null) as "Name"
from pg_catalog.pg_type t
left join pg_catalog.pg_namespace n on n.oid = t.typnamespace
where (t.typrelid = 0 or (select c.relkind = 'c' from pg_catalog.pg_class c
where c.oid = t.typrelid))
and not exists(select 1 from pg_catalog.pg_type el where el.oid =
t.typelem and el.typarray = t.oid) and n.nspname = 'pg_catalog'
order by 1, 2

Definition at line 190 of file pg_types.hpp.

Function Documentation

◆ BufferWriter()

template<typename T >
traits::IO< T >::FormatterType storages::postgres::io::BufferWriter ( const T & value)

Definition at line 115 of file buffer_io.hpp.

◆ IsTypeMappedToSystem()

template<typename T >
constexpr bool storages::postgres::io::IsTypeMappedToSystem ( )
constexpr

Definition at line 124 of file type_mapping.hpp.

◆ IsTypeMappedToSystemArray()

template<typename T >
constexpr bool storages::postgres::io::IsTypeMappedToSystemArray ( )
constexpr

Definition at line 432 of file array_types.hpp.

◆ ReadBuffer() [1/2]

template<typename T >
void storages::postgres::io::ReadBuffer ( const FieldBuffer & buffer,
T && value )

Read a value from input buffer.

Definition at line 73 of file buffer_io.hpp.

◆ ReadBuffer() [2/2]

template<typename T >
void storages::postgres::io::ReadBuffer ( const FieldBuffer & buffer,
T && value,
const TypeBufferCategory & categories )

Definition at line 92 of file buffer_io.hpp.

◆ ReadRawBinary()

template<typename T >
std::size_t storages::postgres::io::ReadRawBinary ( FieldBuffer buffer,
T & value,
const TypeBufferCategory & categories )

Definition at line 70 of file field_buffer.hpp.

◆ SplitContainer()

template<typename Container >
detail::ContainerSplitter< Container > storages::postgres::io::SplitContainer ( const Container & container,
std::size_t chunk_elements )

Definition at line 672 of file array_types.hpp.

◆ SplitContainerByColumns()

template<typename Container >
detail::ContainerByColumnsSplitter< Container > storages::postgres::io::SplitContainerByColumns ( const Container & container,
std::size_t chunk_elements )

Definition at line 678 of file array_types.hpp.

◆ WriteBuffer()

template<typename T , typename Buffer >
void storages::postgres::io::WriteBuffer ( const UserTypes & types,
Buffer & buffer,
const T & value )

Definition at line 124 of file buffer_io.hpp.

◆ WriteRawBinary()

template<typename T , typename Buffer >
void storages::postgres::io::WriteRawBinary ( const UserTypes & types,
Buffer & buffer,
const T & value,
Oid replace_oid = kInvalidOid )

Definition at line 91 of file field_buffer.hpp.

Variable Documentation

◆ kPgBinaryDataFormat

constexpr int storages::postgres::io::kPgBinaryDataFormat = 1
inlineconstexpr

Definition at line 51 of file traits.hpp.

◆ kPgNullBufferSize

constexpr Integer storages::postgres::io::kPgNullBufferSize = -1
inlineconstexpr

Fields that are null are denoted by specifying their length == -1.

Definition at line 54 of file traits.hpp.