userver: storages::postgres::io Namespace Reference
Loading...
Searching...
No Matches
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< 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::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< TimePointTz >
 Binary formatter for TimePointTz. More...
 
struct  BufferFormatter< TimePointWithoutTz >
 Binary formatter for TimePointWithoutTz. More...
 
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  BufferFormatter<::utils::StrongTypedef< Tag, T, Ops, Enable > >
 
struct  BufferParser
 Primary template for Postgre buffer parser. Specialisations should provide call operators that parse FieldBuffer. More...
 
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::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< TimePoint >
 Binary parser for TimePoint. Implicitly converts TimePoint to TimePointWithoutTz. More...
 
struct  BufferParser< TimePointTz >
 Binary parser for TimePointTz. More...
 
struct  BufferParser< TimePointWithoutTz >
 Binary parser for TimePointWithoutTz. More...
 
struct  BufferParser<::utils::datetime::TimeOfDay< Duration > >
 Binary parser for utils::datetime::TimeOfDay mapped to postgres time. More...
 
struct  BufferParser<::utils::StrongTypedef< Tag, T, Ops, Enable > >
 
struct  Codegen
 
struct  CppToPg
 Detect mapping of a C++ type to Postgres type. More...
 
struct  CppToPg< ::utils::StrongTypedef< Tag, T, Ops, Enable >, std::enable_if_t<!traits::kIsStrongTypedefDirectlyMapped< Tag, T, Ops, Enable > &&traits::kIsMappedToPg< T > > >
 
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  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< TimePointWithoutTz >
 
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 309 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 171 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 112 of file buffer_io.hpp.

◆ IsTypeMappedToSystem()

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

Definition at line 121 of file type_mapping.hpp.

◆ IsTypeMappedToSystemArray()

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

Definition at line 420 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 69 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 90 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 64 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 637 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 643 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 121 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 83 of file field_buffer.hpp.

Variable Documentation

◆ kPgBinaryDataFormat

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

Definition at line 49 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 52 of file traits.hpp.