More flexible array retrieval + *vector support.

This commit is contained in:
eelke 2017-12-17 11:27:42 +01:00
parent d9854d81fa
commit db75d9ed50
5 changed files with 119 additions and 8 deletions

View file

@ -2,6 +2,8 @@
#define PGSQL_OIDS_H
#include <libpq-fe.h>
#include <cstdint>
#include <QDateTime>
namespace Pgsql {
constexpr Oid bool_oid = 16;
@ -141,6 +143,47 @@ namespace Pgsql {
Oid ElemOidFromArrayOid(Oid oid);
Oid ArrayOidFromElemOid(Oid oid);
template <typename T>
class OidFor {
public:
static Oid elem();
static Oid array();
};
template <>
class OidFor<int16_t> {
public:
static Oid elem() { return int2_oid; }
static Oid array() { return int2_array_oid; }
};
template <>
class OidFor<int32_t> {
public:
static Oid elem() { return int4_oid; }
static Oid array() { return int4_array_oid; }
};
template <>
class OidFor<unsigned int> {
public:
static Oid elem() { return oid_oid; }
static Oid array() { return oid_array_oid; }
};
template <>
class OidFor<QDateTime> {
public:
static Oid elem() { return timestamptz_oid; }
static Oid array() { return timestamptz_array_oid; }
};
// template <>
// class OidFor<> {
// public:
// static Oid elem() { return _oid; }
// static Oid array() { return _array_oid; }
// };
} // end of namespace Pgsql
#endif // PGSQL_OIDS_H