8 #define SOCI_POSTGRESQL_SOURCE 14 #include <libpq/libpq-fs.h> 22 #ifdef SOCI_POSTGRESQL_NOPARAMS 23 #ifndef SOCI_POSTGRESQL_NOBINDBYNAME 24 #define SOCI_POSTGRESQL_NOBINDBYNAME 25 #endif // SOCI_POSTGRESQL_NOBINDBYNAME 26 #endif // SOCI_POSTGRESQL_NOPARAMS 38 position_ = position++;
47 bool gotData,
bool calledFromFetch,
indicator * ind)
49 if (calledFromFetch ==
true && gotData ==
false)
59 int const pos = position_ - 1;
62 if (PQgetisnull(statement_.result_, statement_.currentRow_, pos) != 0)
67 "Null value fetched and no indicator defined.");
84 char const * buf = PQgetvalue(statement_.result_,
85 statement_.currentRow_, pos);
91 char * dest =
static_cast<char *
>(data_);
97 std::string * dest =
static_cast<std::string *
>(data_);
103 short * dest =
static_cast<short *
>(data_);
104 *dest = string_to_integer<short>(buf);
109 int * dest =
static_cast<int *
>(data_);
110 *dest = string_to_integer<int>(buf);
115 long long * dest =
static_cast<long long *
>(data_);
116 *dest = string_to_integer<long long>(buf);
121 unsigned long long * dest =
static_cast<unsigned long long *
>(data_);
122 *dest = string_to_unsigned_integer<unsigned long long>(buf);
127 double * dest =
static_cast<double *
>(data_);
134 std::tm * dest =
static_cast<std::tm *
>(data_);
147 rbe->
value_ = string_to_unsigned_integer<unsigned long>(buf);
153 string_to_unsigned_integer<unsigned long>(buf);
155 int fd = lo_open(statement_.session_.conn_, oid,
156 INV_READ | INV_WRITE);
159 throw soci_error(
"Cannot open the blob object.");
162 blob * b =
static_cast<blob *
>(data_);
168 lo_close(statement_.session_.conn_, bbe->
fd_);
177 throw soci_error(
"Into element used with non-supported type.");
virtual void post_fetch(bool gotData, bool calledFromFetch, indicator *ind)
details::rowid_backend * get_backend()
virtual void define_by_pos(int &position, void *data, details::exchange_type type)
details::blob_backend * get_backend()
void parse_std_tm(char const *buf, std::tm &t)
double string_to_double(char const *buf)