From d9f372d7b1bc1abbff5fdf9735118290cd024d5e Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 25 Jan 2024 17:28:38 +0300 Subject: Turn libodb-pgsql repository into package for muti-package repository --- libodb-pgsql/odb/pgsql/pgsql-types.hxx | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 libodb-pgsql/odb/pgsql/pgsql-types.hxx (limited to 'libodb-pgsql/odb/pgsql/pgsql-types.hxx') diff --git a/libodb-pgsql/odb/pgsql/pgsql-types.hxx b/libodb-pgsql/odb/pgsql/pgsql-types.hxx new file mode 100644 index 0000000..117a41e --- /dev/null +++ b/libodb-pgsql/odb/pgsql/pgsql-types.hxx @@ -0,0 +1,59 @@ +// file : odb/pgsql/pgsql-types.hxx +// license : GNU GPL v2; see accompanying LICENSE file + +#ifndef ODB_PGSQL_PGSQL_TYPES_HXX +#define ODB_PGSQL_PGSQL_TYPES_HXX + +#include + +#include // std::size_t + +#include // Oid + +namespace odb +{ + namespace pgsql + { + // The libpq result binding. This data structures is roughly modeled + // after MYSQL_BIND from MySQL. + // + // Types that may need to grow are bound as pointers to pointers to char + // array (normally in details::buffer) in order to allow simple offsetting + // in bulk operation support. Note that if we were to do the same for + // capacity, we could get rid of the buffer growth tracking altogether. + // + struct bind + { + enum buffer_type + { + boolean_, // Buffer is a bool; size, capacity, truncated are unused. + smallint, // Buffer is short; size, capacity, truncated are unused. + integer, // Buffer is int; size, capacity, truncated are unused. + bigint, // Buffer is long long; size, capacity, truncated are unused. + real, // Buffer is float; size, capacity, truncated are unused. + double_, // Buffer is double; size, capacity, truncated are unused. + numeric, // Buffer is a pointer to pointer to char array. + date, // Buffer is int; size, capacity, truncated are unused. + time, // Buffer is long long; size, capacity, truncated are unused. + timestamp,// Buffer is long long; size, capacity, truncated are unused. + text, // Buffer is a pointer to pointer to char array. + bytea, // Buffer is a pointer to pointer to char array. + bit, // Buffer is a pointer to char array. + varbit, // Buffer is a pointer to pointer to char array. + uuid // Buffer is a 16-byte char array; size capacity, truncated + // are unused. Note: big-endian, in RFC 4122/4.1.2 order. + }; + + buffer_type type; + void* buffer; + std::size_t* size; + std::size_t capacity; + bool* is_null; + bool* truncated; + }; + } +} + +#include + +#endif // ODB_PGSQL_PGSQL_TYPES_HXX -- cgit v1.1