diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-05-02 18:41:53 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-05-02 18:41:53 +0100 |
commit | b0cf524f61e5d814fdac4018c3ff4946b9600702 (patch) | |
tree | daafd50182ad0e6cc5dd045d9c5635a74462eaff | |
parent | Centralize all the column reference storage logic (diff) | |
download | libdbpp-postgresql-b0cf524f61e5d814fdac4018c3ff4946b9600702.tar.bz2 libdbpp-postgresql-b0cf524f61e5d814fdac4018c3ff4946b9600702.tar.xz libdbpp-postgresql-b0cf524f61e5d814fdac4018c3ff4946b9600702.zip |
Add support for RDBMS boolean/bit types
-rw-r--r-- | libpqpp/column.cpp | 2 | ||||
-rw-r--r-- | libpqpp/command.cpp | 7 | ||||
-rw-r--r-- | libpqpp/command.h | 8 |
3 files changed, 13 insertions, 4 deletions
diff --git a/libpqpp/column.cpp b/libpqpp/column.cpp index 745fdd5..c43e4ab 100644 --- a/libpqpp/column.cpp +++ b/libpqpp/column.cpp @@ -32,7 +32,7 @@ PQ::Column::apply(DB::HandleField & h) const h.string(PQgetvalue(sc->execRes, sc->tuple, colNo), PQgetlength(sc->execRes, sc->tuple, colNo)); break; case 16: //BOOLOID: - h.integer(PQgetvalue(sc->execRes, sc->tuple, colNo)[0] == 't' ? 1 : 0); + h.boolean(PQgetvalue(sc->execRes, sc->tuple, colNo)[0] == 't' ? 1 : 0); break; case 21: //INT2OID: case 23: //INT4OID: diff --git a/libpqpp/command.cpp b/libpqpp/command.cpp index abd37e6..ba12574 100644 --- a/libpqpp/command.cpp +++ b/libpqpp/command.cpp @@ -81,6 +81,13 @@ PQ::Command::bindParamI(unsigned int n, long long unsigned int v) formats[n] = 0; } void +PQ::Command::bindParamB(unsigned int n, bool v) +{ + paramsAtLeast(n); + lengths[n] = asprintf(&values[n], "%s", v ? "true" : "false"); + formats[n] = 0; +} +void PQ::Command::bindParamF(unsigned int n, double v) { paramsAtLeast(n); diff --git a/libpqpp/command.h b/libpqpp/command.h index e78722b..a3601c4 100644 --- a/libpqpp/command.h +++ b/libpqpp/command.h @@ -19,14 +19,16 @@ namespace PQ { void bindParamI(unsigned int, long unsigned int); void bindParamI(unsigned int, long long unsigned int); + void bindParamB(unsigned int, bool); + void bindParamF(unsigned int, double); void bindParamF(unsigned int, float); - + void bindParamS(unsigned int, const Glib::ustring&); - + void bindParamT(unsigned int, const boost::posix_time::time_duration &); void bindParamT(unsigned int, const boost::posix_time::ptime &); - + void bindNull(unsigned int); protected: const std::string stmntName; |