From 19609c41b15a818df30508576f50fc0eddc11636 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 5 Jun 2017 18:53:22 +0100 Subject: Support fetching data in binary format (no numeric, datetime, interval support yet) --- libpqpp/pq-binarycolumn.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 libpqpp/pq-binarycolumn.cpp (limited to 'libpqpp/pq-binarycolumn.cpp') diff --git a/libpqpp/pq-binarycolumn.cpp b/libpqpp/pq-binarycolumn.cpp new file mode 100644 index 0000000..ff49b26 --- /dev/null +++ b/libpqpp/pq-binarycolumn.cpp @@ -0,0 +1,43 @@ +#include "pq-binarycolumn.h" +#include "pq-selectbase.h" +#include + +PQ::BinaryColumn::BinaryColumn(const PQ::SelectBase * s, unsigned int f) : + PQ::Column(s, f) +{ +} + +void +PQ::BinaryColumn::apply(DB::HandleField & h) const +{ + if (isNull()) { + h.null(); + return; + } + switch (oid) { + case 18: //CHAROID: + case 1043: //VARCHAROID: + case 25: //TEXTOID: + case 142: //XMLOID: + h.string(value(), length()); + break; + case 16: //BOOLOID: + h.boolean(valueAs()); + break; + case 21: //INT2OID: + h.integer(be16toh(valueAs())); + break; + case 23: //INT4OID: + h.integer(be32toh(valueAs())); + break; + case 20: //INT8OID: + h.integer(be64toh(valueAs())); + break; + case 17: //BYTEAOID + h.blob(DB::Blob(value(), length())); + break; + default: + throw DB::ColumnTypeNotSupported(); + } +} + -- cgit v1.2.3