Messy commit. Testing suff and some improvements to how data is shown.

This commit is contained in:
eelke 2017-12-09 10:45:13 +01:00
parent bebb3391c3
commit 3a13b7ffb4
59 changed files with 2045 additions and 716 deletions

2
pgsql/Pgsql_Col.cpp Normal file
View file

@ -0,0 +1,2 @@
#include "Pgsql_Col.h"

39
pgsql/Pgsql_Col.h Normal file
View file

@ -0,0 +1,39 @@
#ifndef PGSQL_COL_H
#define PGSQL_COL_H
#include "Pgsql_Row.h"
namespace Pgsql {
class Col {
public:
explicit Col(Pgsql::Row &r)
: row(r)
{}
void reset() { col = -1; }
Pgsql::Value nextValue()
{
return row.get(++col);
}
private:
Pgsql::Row &row;
int col = -1;
};
// template <typename T>
// void operator<<(T &s, Col &c)
// {
// s << c.nextValue();
// }
template <typename T>
Col& operator>>(Col &c, T &s)
{
s << c.nextValue();
return c;
}
} // end namespace Pgsql
#endif // PGSQL_COL_H

View file

@ -22,8 +22,8 @@ namespace Pgsql {
*
* The class takes ownership of data and will try to delete[] it.
*/
void addText(const char *data, Oid oid=oid_varchar);
void add(const QString &s, Oid oid=oid_varchar);
void addText(const char *data, Oid oid=VARCHAROID);
void add(const QString &s, Oid oid=VARCHAROID);
void addBinary(const char *data, int length, Oid oid);
void clear();

View file

@ -21,6 +21,8 @@ namespace Pgsql {
Value get(int col) const;
//Value get(const char *colname) const;
//bool get(int col, QString &s);
private:
const Result& m_result;
int m_row;

View file

@ -5,7 +5,8 @@
using namespace Pgsql;
Value::Value(const char *val, Oid typ)
: m_val(val), m_typ(typ)
: m_val(val)
, m_typ(typ)
{}
QString Value::asQString() const
@ -15,15 +16,30 @@ QString Value::asQString() const
Value::operator QString() const
{
return QString::fromUtf8(m_val);
// if (isString())
return QString::fromUtf8(m_val);
// else
// throw std::logic_error("Column type doesn't match requested type");
}
Value::operator QDateTime() const
{
return QDateTime::fromString(asQString(),
"yyyy-MM-dd hh:mm:ss");
return QDateTime::fromString(asQString(), Qt::ISODateWithMs);
// return QDateTime::fromString(asQString(),
// "yyyy-MM-dd hh:mm:ss");
}
Value::operator QDate() const
{
return QDate::fromString(asQString(), Qt::ISODate);
}
Value::operator QTime() const
{
return QTime::fromString(asQString(), Qt::ISODateWithMs);
}
Value::operator std::string() const
{
return m_val;
@ -54,6 +70,14 @@ Value::operator bool() const
return std::strcmp(m_val, "t") == 0;
}
bool Value::isString() const
{
return m_typ == CHAROID
|| m_typ == VARCHAROID
|| m_typ == TEXTOID
;
}
//void operator<<(QString &s, const Value &v)

View file

@ -17,12 +17,17 @@ namespace Pgsql {
operator QString() const;
operator QDateTime() const;
operator QDate() const;
operator QTime() const;
operator std::string() const;
operator short() const;
operator int() const;
operator Oid() const;
operator long long() const;
operator bool() const;
bool isString() const;
private:
const char *m_val;
Oid m_typ;

View file

@ -5,15 +5,95 @@
namespace Pgsql {
const Oid oid_bool = 16;
const Oid oid_int2 = 21;
const Oid oid_int4 = 23;
const Oid oid_int8 = 20;
const Oid oid_float4 = 700;
const Oid oid_float8 = 701;
const Oid oid_numeric = 1700;
const Oid oid_oid = 26;
const Oid oid_varchar = 1043;
const Oid BOOLOID = 16;
const Oid BYTEAOID = 17;
const Oid CHAROID = 18;
const Oid NAMEOID = 19;
const Oid INT8OID = 20;
const Oid INT2OID = 21;
const Oid INT2VECTOROID = 22;
const Oid INT4OID = 23;
const Oid REGPROCOID = 24;
const Oid TEXTOID = 25;
const Oid OIDOID = 26;
const Oid TIDOID = 27;
const Oid XIDOID = 28;
const Oid CIDOID = 29;
const Oid OIDVECTOROID = 30;
const Oid JSONOID = 114;
const Oid XMLOID = 142;
const Oid PGNODETREEOID = 194;
const Oid PGDDLCOMMANDOID = 32;
const Oid POINTOID = 600;
const Oid LSEGOID = 601;
const Oid PATHOID = 602;
const Oid BOXOID = 603;
const Oid POLYGONOID = 604;
const Oid LINEOID = 628;
const Oid FLOAT4OID = 700;
const Oid FLOAT8OID = 701;
const Oid ABSTIMEOID = 702;
const Oid RELTIMEOID = 703;
const Oid TINTERVALOID = 704;
const Oid UNKNOWNOID = 705;
const Oid CIRCLEOID = 718;
const Oid CASHOID = 790;
const Oid MACADDROID = 829;
const Oid INETOID = 869;
const Oid CIDROID = 650;
const Oid INT2ARRAYOID = 1005;
const Oid INT4ARRAYOID = 1007;
const Oid TEXTARRAYOID = 1009;
const Oid OIDARRAYOID = 1028;
const Oid FLOAT4ARRAYOID = 1021;
const Oid ACLITEMOID = 1033;
const Oid CSTRINGARRAYOID = 1263;
const Oid BPCHAROID = 1042;
const Oid VARCHAROID = 1043;
const Oid DATEOID = 1082;
const Oid TIMEOID = 1083;
const Oid TIMESTAMPOID = 1114;
const Oid TIMESTAMPTZOID = 1184;
const Oid INTERVALOID = 1186;
const Oid TIMETZOID = 1266;
const Oid BITOID = 1560;
const Oid VARBITOID = 1562;
const Oid NUMERICOID = 1700;
const Oid REFCURSOROID = 1790;
const Oid REGPROCEDUREOID = 2202;
const Oid REGOPEROID = 2203;
const Oid REGOPERATOROID = 2204;
const Oid REGCLASSOID = 2205;
const Oid REGTYPEOID = 2206;
const Oid REGROLEOID = 4096;
const Oid REGNAMESPACEOID = 4089;
const Oid REGTYPEARRAYOID = 2211;
const Oid UUIDOID = 2950;
const Oid LSNOID = 3220;
const Oid TSVECTOROID = 3614;
const Oid GTSVECTOROID = 3642;
const Oid TSQUERYOID = 3615;
const Oid REGCONFIGOID = 3734;
const Oid REGDICTIONARYOID = 3769;
const Oid JSONBOID = 3802;
const Oid INT4RANGEOID = 3904;
const Oid RECORDOID = 2249;
const Oid RECORDARRAYOID = 2287;
const Oid CSTRINGOID = 2275;
const Oid ANYOID = 2276;
const Oid ANYARRAYOID = 2277;
const Oid VOIDOID = 2278;
const Oid TRIGGEROID = 2279;
const Oid EVTTRIGGEROID = 3838;
const Oid LANGUAGE_HANDLEROID = 2280;
const Oid INTERNALOID = 2281;
const Oid OPAQUEOID = 2282;
const Oid ANYELEMENTOID = 2283;
const Oid ANYNONARRAYOID = 2776;
const Oid ANYENUMOID = 3500;
const Oid FDW_HANDLEROID = 3115;
const Oid TSM_HANDLEROID = 3310;
const Oid ANYRANGEOID = 3831;
class Params;

View file

@ -12,7 +12,10 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql
TARGET = pgsql
TEMPLATE = lib
INCLUDEPATH += C:\prog\include C:\Prog\include\pgsql C:\VSproj\boost32\include\boost-1_65_1
INCLUDEPATH += C:\prog\include \
C:\Prog\include\pgsql \
C:\VSproj\boost32\include\boost-1_65_1
DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX
#LIBS += -LC:/prog/boost/lib -Lc:/prog/lib libpq.lib fmt.lib User32.lib ws2_32.lib
LIBS += -LC:/PROG/LIB -lws2_32 -llibpq
@ -31,14 +34,16 @@ SOURCES += Pgsql_Connection.cpp \
Pgsql_Params.cpp \
Pgsql_Result.cpp \
Pgsql_Row.cpp \
Pgsql_Value.cpp
Pgsql_Value.cpp \
Pgsql_Col.cpp
HEADERS += Pgsql_Connection.h \
Pgsql_Params.h \
Pgsql_Result.h \
Pgsql_Row.h \
Pgsql_Value.h \
Pgsql_declare.h
Pgsql_declare.h \
Pgsql_Col.h
#FORMS +=