PostgresqlDriver

Search for usage in LXR

#include <PostgresqlDriver.h>

Inheritance diagram for PostgresqlDriver:

Public Member Functions

 PostgresqlDriver (QObject *parent, const QVariantList &args)
 
KDbEscapedString escapeBLOB (const QByteArray &array) const override
 
KDbEscapedString escapeString (const QByteArray &str) const override
 
KDbEscapedString escapeString (const QString &str) const override
 
KDbEscapedString greatestOrLeastFunctionToString (const QString &name, const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const override
 
KDbEscapedString hexFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const override
 
KDbEscapedString ifnullFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const override
 
bool isSystemDatabaseName (const QString &name) const override
 
bool isSystemObjectName (const QString &name) const override
 
KDbEscapedString lengthFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const override
 
KDbField::Type pgsqlToKDbType (int pqtype, int pqfmod, int *maxTextLength) const
 
QString sqlTypeName (KDbField::Type type, const KDbField &field) const override
 
KDbEscapedString unicodeFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const override
 
- Public Member Functions inherited from KDbDriver
 ~KDbDriver () override
 
KDbAdminToolsadminTools () const
 
virtual KDbEscapedString ceilingOrFloorFunctionToString (const QString &name, const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
virtual KDbEscapedString collationSql () const
 
KDbEscapedString concatenateFunctionToString (const KDbBinaryExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
const QSet< KDbConnection * > connections () const
 
KDbConnectioncreateConnection (const KDbConnectionData &connData)
 
KDbConnectioncreateConnection (const KDbConnectionData &connData, const KDbConnectionOptions &options)
 
virtual KDB_DEPRECATED KDbEscapedString dateTimeToSql (const QDateTime &v) const
 
virtual KDbEscapedString dateTimeToSql (const QVariant &v) const
 
virtual KDbEscapedString dateToSql (const QVariant &v) const
 
QByteArray escapeIdentifier (const QByteArray &str) const
 
QString escapeIdentifier (const QString &str) const
 
int features () const
 
KDbUtils::Property internalProperty (const QByteArray &name) const
 
QList< QByteArrayinternalPropertyNames () const
 
bool isDriverSpecificKeyword (const QByteArray &word) const
 
bool isSystemFieldName (const QString &name) const
 
const KDbDriverMetaDatametaData () const
 
virtual KDbEscapedString randomFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
virtual KDbEscapedString timeToSql (const QVariant &v) const
 
bool transactionsSupported () const
 
KDbEscapedString valueToSql (const KDbField *field, const QVariant &v) const
 
KDbEscapedString valueToSql (const QString &ftype, const QVariant &v) const
 
virtual KDbEscapedString valueToSql (KDbField::Type ftype, const QVariant &v) const
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
bool blockSignals (bool block)
 
const QObjectListchildren () const const
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectInfo ()
 
void dumpObjectInfo () const const
 
void dumpObjectTree ()
 
void dumpObjectTree () const const
 
QList< QByteArraydynamicPropertyNames () const const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const const
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
QVariant property (const char *name) const const
 
 Q_CLASSINFO (Name, Value)
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_NAMESPACE_EXPORT (EXPORT_MACRO)
 
 Q_OBJECT Q_OBJECT
 
 Q_PROPERTY (...)
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SLOT Q_SLOT
 
 Q_SLOTS Q_SLOTS
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
qobject_cast (const QObject *object)
 
qobject_cast (QObject *object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
QThreadthread () const const
 
- Public Member Functions inherited from KDbResultable
 KDbResultable (const KDbResultable &other)
 
void clearResult ()
 
KDbMessageHandlermessageHandler () const
 
KDbResultableoperator= (const KDbResultable &other)
 
KDbResult result () const
 
virtual QString serverResultName () const
 
void setMessageHandler (KDbMessageHandler *handler)
 
void showMessage ()
 

Static Public Member Functions

static int pqfmodToLength (int pqfmod)
 
static KDbField::Type typeForSize (KDbField::Type t, int pqfmod, int *maxTextLength)
 
- Static Public Member Functions inherited from KDbDriver
static QString defaultSqlTypeName (KDbField::Type type)
 
static bool isKDbSystemObjectName (const QString &name)
 
- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 

Protected Member Functions

KDbConnectiondrv_createConnection (const KDbConnectionData &connData, const KDbConnectionOptions &options) override
 
QByteArray drv_escapeIdentifier (const QByteArray &str) const override
 
QString drv_escapeIdentifier (const QString &str) const override
 
bool drv_isSystemFieldName (const QString &name) const override
 
- Protected Member Functions inherited from KDbDriver
 KDbDriver (QObject *parent, const QVariantList &args)
 
virtual KDbEscapedString addLimitTo1 (const KDbEscapedString &sql, bool add=true)
 
KDbDriverBehaviorbehavior ()
 
const KDbDriverBehaviorbehavior () const
 
virtual KDbAdminToolsdrv_createAdminTools () const
 
void initDriverSpecificKeywords (const char *const *keywords)
 
virtual bool isValid ()
 
KDbConnectionremoveConnection (KDbConnection *conn)
 
void setMetaData (const KDbDriverMetaData *metaData)
 
virtual bool supportsDefaultValue (const KDbField &field) const
 
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
int receivers (const char *signal) const const
 
QObjectsender () const const
 
int senderSignalIndex () const const
 
virtual void timerEvent (QTimerEvent *event)
 

Additional Inherited Members

- Public Types inherited from KDbDriver
enum  Features {
  NoFeatures = 0, SingleTransactions = 1, MultipleTransactions = 2, NestedTransactions = 4,
  CursorForward = 8, CursorBackward = (CursorForward + 16), CompactingDatabaseSupported = 32, IgnoreTransactions = 1024
}
 
- Properties inherited from QObject
 objectName
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Attributes inherited from KDbDriver
KDbDriverPrivate *const d
 
- Protected Attributes inherited from KDbResultable
Private *const d
 
KDbResult m_result
 

Detailed Description

PostgreSQL database driver.

Definition at line 29 of file PostgresqlDriver.h.

Constructor & Destructor Documentation

◆ PostgresqlDriver()

PostgresqlDriver::PostgresqlDriver ( QObject parent,
const QVariantList &  args 
)
Todo:
enable this when KDb supports multiple: beh->features = MultipleTransactions | CursorForward | CursorBackward;
Todo:
use QLibrary to resolve PQlibVersion
Todo:
pgsql default_server_encoding: should be a property of connection

Definition at line 37 of file PostgresqlDriver.cpp.

Member Function Documentation

◆ drv_createConnection()

KDbConnection * PostgresqlDriver::drv_createConnection ( const KDbConnectionData connData,
const KDbConnectionOptions options 
)
overrideprotectedvirtual

For reimplementation: creates and returns connection object with additional structures specific for a given driver. KDbConnection object should inherit KDbConnection and have a destructor that descructs all allocated driver-dependent connection structures.

Implements KDbDriver.

Definition at line 106 of file PostgresqlDriver.cpp.

◆ drv_escapeIdentifier() [1/2]

QByteArray PostgresqlDriver::drv_escapeIdentifier ( const QByteArray str) const
overrideprotectedvirtual

This is overloaded version of drv_escapeIdentifier( const QString& str ) to be implemented in the same way.

Implements KDbDriver.

Definition at line 156 of file PostgresqlDriver.cpp.

◆ drv_escapeIdentifier() [2/2]

QString PostgresqlDriver::drv_escapeIdentifier ( const QString str) const
overrideprotectedvirtual

Driver-specific SQL string escaping. This method is used by escapeIdentifier(). Implement escaping for any character like " or ' as your database engine requires. Do not append or prepend any quotation marks characters - it is automatically done by escapeIdentifier() using KDbDriverBehavior::OPENING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER and KDbDriverBehavior::CLOSING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER.

Implements KDbDriver.

Definition at line 151 of file PostgresqlDriver.cpp.

◆ drv_isSystemFieldName()

bool PostgresqlDriver::drv_isSystemFieldName ( const QString name) const
overrideprotectedvirtual
Returns
true if name is a system field's name, build-in system field that cannot be used or created by a user, and in most cases user even shouldn't see this. The list is specific for a given driver implementation. For implementation.

Implements KDbDriver.

Definition at line 118 of file PostgresqlDriver.cpp.

◆ escapeBLOB()

KDbEscapedString PostgresqlDriver::escapeBLOB ( const QByteArray array) const
overridevirtual

Escape BLOB value array.

Implements KDbDriver.

Definition at line 161 of file PostgresqlDriver.cpp.

◆ escapeString() [1/2]

KDbEscapedString PostgresqlDriver::escapeString ( const QByteArray str) const
overridevirtual

This is overloaded version of escapeString( const QString& str ) to be implemented in the same way.

Implements KDbDriver.

Definition at line 141 of file PostgresqlDriver.cpp.

◆ escapeString() [2/2]

KDbEscapedString PostgresqlDriver::escapeString ( const QString str) const
overridevirtual

Escape a string for use as a value.

Implements KDbDriver.

Definition at line 131 of file PostgresqlDriver.cpp.

◆ greatestOrLeastFunctionToString()

KDbEscapedString PostgresqlDriver::greatestOrLeastFunctionToString ( const QString name,
const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
overridevirtual

Generates native (driver-specific) GREATEST() and LEAST() function calls.

Since PostgreSQL's LEAST()/GREATEST() function ignores NULL values, it only returns NULL if all the expressions evaluate to NULL. So this is used for F(v0,..,vN): (CASE WHEN (v0) IS NULL OR .. OR (vN) IS NULL THEN NULL ELSE F(v0,..,vN) END) where F == GREATEST or LEAST.

Reimplemented from KDbDriver.

Definition at line 192 of file PostgresqlDriver.cpp.

◆ hexFunctionToString()

KDbEscapedString PostgresqlDriver::hexFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
overridevirtual

Generates native (driver-specific) HEX() function call.

Uses UPPER(ENCODE(val, 'hex')). See https://www.postgresql.org/docs/9.3/static/functions-string.html#FUNCTIONS-STRING-OTHER *‍/

Reimplemented from KDbDriver.

Definition at line 166 of file PostgresqlDriver.cpp.

◆ ifnullFunctionToString()

KDbEscapedString PostgresqlDriver::ifnullFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
overridevirtual

Generates native (driver-specific) IFNULL() function call.

Uses COALESCE().

Reimplemented from KDbDriver.

Definition at line 174 of file PostgresqlDriver.cpp.

◆ isSystemDatabaseName()

bool PostgresqlDriver::isSystemDatabaseName ( const QString name) const
overridevirtual
Returns
true if name is a database type-specific system database's name, e.g. name of a built-in system database that cannot be created by a user, and in most cases user a name that user shouldn't even see.
See also
isKDbSystemObjectName() isSystemObjectName() isSystemFieldName()

Implements KDbDriver.

Definition at line 124 of file PostgresqlDriver.cpp.

◆ isSystemObjectName()

bool PostgresqlDriver::isSystemObjectName ( const QString name) const
overridevirtual
Todo:
implement

Implements KDbDriver.

Definition at line 112 of file PostgresqlDriver.cpp.

◆ lengthFunctionToString()

KDbEscapedString PostgresqlDriver::lengthFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
overridevirtual

Generates native (driver-specific) LENGTH() function call.

For text types default LENGTH(val) is used, for BLOBs OCTET_LENGTH(val) is used because LENGTH(val) for BLOB returns number of bits.

Reimplemented from KDbDriver.

Definition at line 181 of file PostgresqlDriver.cpp.

◆ pgsqlToKDbType()

KDbField::Type PostgresqlDriver::pgsqlToKDbType ( int  pqtype,
int  pqfmod,
int *  maxTextLength 
) const
inline
Returns
KDb field type for PostgreSQL type pqtype and modifier pqfmod. If type cannot be found KDbField::InvalidType is returned. Used in cursors to speed up data conversion.

Definition at line 96 of file PostgresqlDriver.h.

◆ pqfmodToLength()

static int PostgresqlDriver::pqfmodToLength ( int  pqfmod)
inlinestatic

Converts information converted from PQfmod() to length. -1 if missing.

< See e.g. postgis_get_char_length()

Definition at line 53 of file PostgresqlDriver.h.

◆ sqlTypeName()

QString PostgresqlDriver::sqlTypeName ( KDbField::Type  type,
const KDbField field 
) const
overridevirtual

Overrides the default implementation to allow for NUMERIC type natively.

Reimplemented from KDbDriver.

Definition at line 93 of file PostgresqlDriver.cpp.

◆ typeForSize()

static KDbField::Type PostgresqlDriver::typeForSize ( KDbField::Type  t,
int  pqfmod,
int *  maxTextLength 
)
inlinestatic

Uses information obtained from PQfmod() and adjust type t if possible.

Also sets maxTextLength.

Todo:

using pqfmod not tested

more types such as decimal

Definition at line 68 of file PostgresqlDriver.h.

◆ unicodeFunctionToString()

KDbEscapedString PostgresqlDriver::unicodeFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
overridevirtual

Generates native (driver-specific) UNICODE() function call.

Uses ASCII(X).

Reimplemented from KDbDriver.

Definition at line 201 of file PostgresqlDriver.cpp.


The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Wed Sep 28 2022 04:08:41 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.