summaryrefslogtreecommitdiff
path: root/libpqpp/pq-selectbase.cpp
blob: 93dee507aadeaeee518c89d4101b9f5c52c96b47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "pq-selectbase.h"
#include "pq-column.h"
#include "pq-binarycolumn.h"
#include "pq-command.h"

PQ::SelectBase::SelectBase(const std::string & sql, const PQ::CommandOptionsCPtr & pqco) :
	DB::Command(sql),
	DB::SelectCommand(sql),
	nTuples(0),
	tuple(0),
	execRes(nullptr),
	binary(pqco ? pqco->fetchBinary : false)
{
}

PQ::SelectBase::~SelectBase()
{
	if (execRes) {
		PQclear(execRes);
	}
}

void
PQ::SelectBase::createColumns(PGresult * execRes)
{
	unsigned int nFields = PQnfields(execRes);
	for (unsigned int f = 0; f < nFields; f += 1) {
		if (binary) {
			insertColumn(std::make_unique<BinaryColumn>(this, f));
		}
		else {
			insertColumn(std::make_unique<Column>(this, f));
		}
	}
}