KDbDriver

Search for usage in LXR

#include <KDbDriver.h>

Inheritance diagram for KDbDriver:

Public Types

enum  Features {
  NoFeatures = 0, SingleTransactions = 1, MultipleTransactions = 2, NestedTransactions = 4,
  CursorForward = 8, CursorBackward = (CursorForward + 16), CompactingDatabaseSupported = 32, IgnoreTransactions = 1024
}
 

Public Member Functions

 ~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
 
virtual KDbEscapedString escapeBLOB (const QByteArray &array) const =0
 
QByteArray escapeIdentifier (const QByteArray &str) const
 
QString escapeIdentifier (const QString &str) const
 
virtual KDbEscapedString escapeString (const QByteArray &str) const =0
 
virtual KDbEscapedString escapeString (const QString &str) const =0
 
int features () const
 
virtual KDbEscapedString greatestOrLeastFunctionToString (const QString &name, const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
virtual KDbEscapedString hexFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
virtual KDbEscapedString ifnullFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
KDbUtils::Property internalProperty (const QByteArray &name) const
 
QList< QByteArrayinternalPropertyNames () const
 
bool isDriverSpecificKeyword (const QByteArray &word) const
 
virtual bool isSystemDatabaseName (const QString &name) const =0
 
bool isSystemFieldName (const QString &name) const
 
virtual bool isSystemObjectName (const QString &name) const =0
 
virtual KDbEscapedString lengthFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
const KDbDriverMetaDatametaData () const
 
virtual KDbEscapedString randomFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
virtual QString sqlTypeName (KDbField::Type type, const KDbField &field) const
 
virtual KDbEscapedString timeToSql (const QVariant &v) const
 
bool transactionsSupported () const
 
virtual KDbEscapedString unicodeFunctionToString (const KDbNArgExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) 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 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

 KDbDriver (QObject *parent, const QVariantList &args)
 
virtual KDbEscapedString addLimitTo1 (const KDbEscapedString &sql, bool add=true)
 
KDbDriverBehaviorbehavior ()
 
const KDbDriverBehaviorbehavior () const
 
virtual KDbAdminToolsdrv_createAdminTools () const
 
virtual KDbConnectiondrv_createConnection (const KDbConnectionData &connData, const KDbConnectionOptions &options)=0
 
virtual QByteArray drv_escapeIdentifier (const QByteArray &str) const =0
 
virtual QString drv_escapeIdentifier (const QString &str) const =0
 
virtual bool drv_isSystemFieldName (const QString &name) const =0
 
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)
 

Protected Attributes

KDbDriverPrivate *const d
 
- Protected Attributes inherited from KDbResultable
Private *const d
 
KDbResult m_result
 

Additional Inherited Members

- Properties inherited from QObject
 objectName
 
- Public Attributes inherited from QObject
typedef QObjectList
 

Detailed Description

Database driver's abstraction.

This class is a prototype of the database driver. KDbDriver allows new connections to be created, and groups as their parent. Before destruction, all owned connections are destructed.

Definition at line 49 of file KDbDriver.h.

Member Enumeration Documentation

◆ Features

Features supported by driver (sum of few Features enum items).

Enumerator
SingleTransactions 

single trasactions are only supported

MultipleTransactions 

multiple concurrent trasactions are supported (this implies !SingleTransactions)

NestedTransactions 

nested trasactions are supported (this should imply !SingleTransactions and MultipleTransactions)

CursorForward 

forward moving is supported for cursors (if not available, no cursors available at all)

CursorBackward 

backward moving is supported for cursors (this implies CursorForward)

CompactingDatabaseSupported 

compacting database supported (aka VACUUM)

IgnoreTransactions 

If set, actions related to transactions will be silently bypassed with success. Set this if your driver does not support transactions at all Currently, this is only way to get it working with KDb. Keep in mind that this hack do not provide data integrity! This flag is currently used for MySQL driver.

Definition at line 55 of file KDbDriver.h.

Constructor & Destructor Documentation

◆ ~KDbDriver()

KDbDriver::~KDbDriver ( )
override

Definition at line 62 of file KDbDriver.cpp.

◆ KDbDriver()

KDbDriver::KDbDriver ( QObject parent,
const QVariantList &  args 
)
protected

Used by KDbDriverManager. Note for driver developers: Reimplement this. In your reimplementation you should initialize:

  • beh->typeNames - to types accepted by your engine
  • beh->features - to combination of selected values from Features enum

You may also want to change options in KDbDriverBehavior *beh member. See drivers/mySQL/mysqldriver.cpp for usage example.

Definition at line 54 of file KDbDriver.cpp.

Member Function Documentation

◆ addLimitTo1()

KDbEscapedString KDbDriver::addLimitTo1 ( const KDbEscapedString sql,
bool  add = true 
)
protectedvirtual
Returns
SQL statement sql modified by appending a "LIMIT 1" clause, (if possible and if add is true). Used for optimization for the server side. Can be reimplemented for other drivers.

Definition at line 301 of file KDbDriver.cpp.

◆ adminTools()

KDbAdminTools & KDbDriver::adminTools ( ) const
Returns
admin tools object providing a number of database administration tools for the driver. Tools availablility varies from driver to driver. You can check it using features().

Definition at line 116 of file KDbDriver.cpp.

◆ behavior() [1/2]

const KDbDriverBehavior * KDbDriver::behavior ( )
protected

Returns structure that provides detailed information about driver's default behavior.

Since
3.1

Definition at line 72 of file KDbDriver.cpp.

◆ behavior() [2/2]

const KDbDriverBehavior* KDbDriver::behavior ( ) const
protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ ceilingOrFloorFunctionToString()

KDbEscapedString KDbDriver::ceilingOrFloorFunctionToString ( const QString name,
const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

Generates native (driver-specific) CEILING() and FLOOR() function calls.

Default implementation USES CEILING() and FLOOR(), respectively. Special case is for SQLite.

Reimplemented in SqliteDriver.

Definition at line 371 of file KDbDriver.cpp.

◆ collationSql()

virtual KDbEscapedString KDbDriver::collationSql ( ) const
inlinevirtual
Returns
SQL clause to add for unicode text collation sequence used in ORDER BY clauses of SQL statements generated by KDb. Later other clauses may use this statement. One space character should be be prepended. Can be reimplemented for other drivers, e.g. the SQLite3 driver returns " COLLATE ''". Default implementation returns empty string.

Reimplemented in SqliteDriver.

Definition at line 232 of file KDbDriver.h.

◆ concatenateFunctionToString()

KDbEscapedString KDbDriver::concatenateFunctionToString ( const KDbBinaryExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const

Generates native (driver-specific) function call for concatenation of two strings.

Default implementation USES infix "||" operator. Special case is for MYSQL (CONCAT()).

Todo:
API supporting KDbNArgExpression would be useful so instead of a||b||c can be expressed as CONCAT(a,b,c) instead of CONCAT(CONCAT(a,b),c). This requires changes to the KDbSQL parser.

Definition at line 388 of file KDbDriver.cpp.

◆ connections()

const QSet< KDbConnection * > KDbDriver::connections ( ) const
Returns
Set of created connections.

Definition at line 96 of file KDbDriver.cpp.

◆ createConnection()

KDbDriver::createConnection ( const KDbConnectionData connData,
const KDbConnectionOptions options 
)

Creates connection using connData as parameters.

Returns
nullptr and sets error message on error. driverId member of connData will be updated with the driver's ID. options can be set for the new connection.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Todo:
needed? connData->setDriverId(id());

Definition at line 137 of file KDbDriver.cpp.

◆ dateTimeToSql() [1/2]

KDbEscapedString KDbDriver::dateTimeToSql ( const QDateTime v) const
virtual

Converts date/time value to string.

Default implementation uses dateTimeToSql(QVariant). Deprecated, use dateTimeToSql(QVariant).

Not compatible with all drivers - reimplement.

Definition at line 265 of file KDbDriver.cpp.

◆ dateTimeToSql() [2/2]

KDbEscapedString KDbDriver::dateTimeToSql ( const QVariant v) const
virtual

Converts date/time value to string.

Default implementation uses KDb::dateTimeToIsoString().

Not compatible with all drivers - reimplement.

Since
3.2.0

Definition at line 260 of file KDbDriver.cpp.

◆ dateToSql()

KDbEscapedString KDbDriver::dateToSql ( const QVariant v) const
virtual

Converts date value to string.

Default implementation uses KDb::dateToSql().

Not compatible with all drivers - reimplement.

Since
3.2.0

Definition at line 250 of file KDbDriver.cpp.

◆ defaultSqlTypeName()

QString KDbDriver::defaultSqlTypeName ( KDbField::Type  type)
static

used when we do not have KDbDriver instance yet

Definition at line 164 of file KDbDriver.cpp.

◆ drv_createAdminTools()

KDbAdminTools * KDbDriver::drv_createAdminTools ( ) const
protectedvirtual

Creates admin tools object providing a number of database administration tools for the driver. This is called once per driver.

Note for driver developers: Reimplement this method by returning a KDbAdminTools-derived object. Default implementation creates anmd returns an empty admin tools KDbAdminTools object.

See also
adminTools()

Reimplemented in SqliteDriver.

Definition at line 123 of file KDbDriver.cpp.

◆ drv_createConnection()

virtual KDbConnection* KDbDriver::drv_createConnection ( const KDbConnectionData connData,
const KDbConnectionOptions options 
)
protectedpure virtual

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.

Implemented in PostgresqlDriver, SqliteDriver, MysqlDriver, and SybaseDriver.

◆ drv_escapeIdentifier() [1/2]

virtual QByteArray KDbDriver::drv_escapeIdentifier ( const QByteArray str) const
protectedpure virtual

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

Implemented in PostgresqlDriver, SqliteDriver, MysqlDriver, and SybaseDriver.

◆ drv_escapeIdentifier() [2/2]

virtual QString KDbDriver::drv_escapeIdentifier ( const QString str) const
protectedpure virtual

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.

Implemented in PostgresqlDriver, SqliteDriver, MysqlDriver, and SybaseDriver.

◆ drv_isSystemFieldName()

virtual bool KDbDriver::drv_isSystemFieldName ( const QString name) const
protectedpure virtual
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.

Implemented in PostgresqlDriver, MysqlDriver, SqliteDriver, and SybaseDriver.

◆ escapeBLOB()

virtual KDbEscapedString KDbDriver::escapeBLOB ( const QByteArray array) const
pure virtual

Driver-specific SQL BLOB value escaping. Implement escaping for any character like " or ' and \0 as your database engine requires. Prepend and append quotation marks.

Implemented in MysqlDriver, SqliteDriver, PostgresqlDriver, and SybaseDriver.

◆ escapeIdentifier()

QString KDbDriver::escapeIdentifier ( const QString str) const
Returns
str string with applied driver-specific identifier escaping

This escaping can be used for field, table, database names, etc.

See also
KDb::escapeIdentifier

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 270 of file KDbDriver.cpp.

◆ escapeString() [1/2]

virtual KDbEscapedString KDbDriver::escapeString ( const QByteArray str) const
pure virtual

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

Implemented in MysqlDriver, SqliteDriver, PostgresqlDriver, and SybaseDriver.

◆ escapeString() [2/2]

virtual KDbEscapedString KDbDriver::escapeString ( const QString str) const
pure virtual

Driver-specific SQL string escaping. Implement escaping for any character like " or ' as your database engine requires. Prepend and append quotation marks.

Implemented in MysqlDriver, SqliteDriver, PostgresqlDriver, and SybaseDriver.

◆ features()

int KDbDriver::features ( ) const
Returns
driver's features that are combination of KDbDriver::Features enum.
Todo:
change int to Features

Definition at line 106 of file KDbDriver.cpp.

◆ greatestOrLeastFunctionToString()

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

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

Default implementation just uses GREATEST() and LEAST(), respectively. (this works only with MySQL >= 5.0.13). For backends workarounds are added.

Reimplemented in PostgresqlDriver, MysqlDriver, and SqliteDriver.

Definition at line 341 of file KDbDriver.cpp.

◆ hexFunctionToString()

KDbEscapedString KDbDriver::hexFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

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

Default implementation uses HEX(val).

Reimplemented in PostgresqlDriver.

Definition at line 317 of file KDbDriver.cpp.

◆ ifnullFunctionToString()

KDbEscapedString KDbDriver::ifnullFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

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

Default implementation uses IFNULL().

Reimplemented in PostgresqlDriver.

Definition at line 325 of file KDbDriver.cpp.

◆ initDriverSpecificKeywords()

void KDbDriver::initDriverSpecificKeywords ( const char *const *  keywords)
protected

Used to initialise the dictionary of driver-specific keywords. Should be called by the driver's constructor. keywords should be 0-terminated array of null-terminated strings.

Definition at line 296 of file KDbDriver.cpp.

◆ internalProperty()

KDbUtils::Property KDbDriver::internalProperty ( const QByteArray name) const
Returns
internal property with a name name for this driver. If there's no such property defined for driver, a null property is returned.

Definition at line 284 of file KDbDriver.cpp.

◆ internalPropertyNames()

QList< QByteArray > KDbDriver::internalPropertyNames ( ) const
Returns
a list of internal property names for this driver.

Definition at line 289 of file KDbDriver.cpp.

◆ isDriverSpecificKeyword()

bool KDbDriver::isDriverSpecificKeyword ( const QByteArray word) const
Returns
true if word is a driver-specific keyword.
See also
KDb::isKDbSqlKeyword(const QByteArray&)

Definition at line 306 of file KDbDriver.cpp.

◆ isKDbSystemObjectName()

bool KDbDriver::isKDbSystemObjectName ( const QString name)
static
Returns
true if name is a related to KDb's 'system' object's name, i.e. when name starts with "kexi__" prefix.
See also
isSystemDatabaseName() isSystemObjectName() isSystemFieldName()

Definition at line 171 of file KDbDriver.cpp.

◆ isSystemDatabaseName()

virtual bool KDbDriver::isSystemDatabaseName ( const QString name) const
pure virtual
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()

Implemented in MysqlDriver, PostgresqlDriver, SybaseDriver, and SqliteDriver.

◆ isSystemFieldName()

bool KDbDriver::isSystemFieldName ( const QString name) const
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.
See also
isSystemDatabaseName() isKDbSystemObjectName() isSystemObjectName()

Definition at line 178 of file KDbDriver.cpp.

◆ isSystemObjectName()

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

Implemented in MysqlDriver, PostgresqlDriver, and SqliteDriver.

◆ isValid()

bool KDbDriver::isValid ( )
protectedvirtual
Returns
true if this driver's implementation is valid. Just a few constraints are checked to ensure that driver developer didn't forget something. This method is called automatically on createConnection(), and proper error message is set properly on error. Drivers can reimpement this method but should call KDbDriver::isValid() first.

Definition at line 82 of file KDbDriver.cpp.

◆ lengthFunctionToString()

KDbEscapedString KDbDriver::lengthFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

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

Default implementation uses LENGTH().

Reimplemented in PostgresqlDriver, and MysqlDriver.

Definition at line 333 of file KDbDriver.cpp.

◆ metaData()

const KDbDriverMetaData * KDbDriver::metaData ( ) const

Info about the driver.

Definition at line 101 of file KDbDriver.cpp.

◆ randomFunctionToString()

KDbEscapedString KDbDriver::randomFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

Generates native (driver-specific) RANDOM() and RANDOM(X,Y) function calls.

Accepted args can contain zero or two positive integer arguments X, Y; X < Y. In case of numeric arguments, RANDOM(X, Y) returns a random integer that is equal or greater than X and less than Y. Default implementation for RANDOM() returns F() where F is behavior()->RANDOM_FUNCTION. This works with PostgreSQL. Default implementation for RANDOM(X,Y) returns (X + FLOOR(F()*(Y-X+1))) where F is behavior()->RANDOM_FUNCTION. This works with PostgreSQL. If args has neither zero nor two arguments, empty string is returned.

Reimplemented in SqliteDriver.

Definition at line 350 of file KDbDriver.cpp.

◆ removeConnection()

KDbConnection * KDbDriver::removeConnection ( KDbConnection conn)
protected
Returns
connection conn, does not delete it nor affect. Returns nullptr if conn is not owned by this driver. After this, you are owner of conn object, so you should eventually delete it. Better use KDbConnection destructor.

Definition at line 156 of file KDbDriver.cpp.

◆ setMetaData()

void KDbDriver::setMetaData ( const KDbDriverMetaData metaData)
protected

Used by the driver manager to set metaData for just loaded driver.

Definition at line 311 of file KDbDriver.cpp.

◆ sqlTypeName()

QString KDbDriver::sqlTypeName ( KDbField::Type  type,
const KDbField field 
) const
virtual

SQL-implementation-dependent name of given type

Reimplemented in MysqlDriver, and PostgresqlDriver.

Definition at line 128 of file KDbDriver.cpp.

◆ supportsDefaultValue()

virtual bool KDbDriver::supportsDefaultValue ( const KDbField field) const
inlineprotectedvirtual
Returns
true if the database supports specifying default values for field field. true by default. For example MySQL does not support default values for BLOB, TEXT, GEOMETRY, and JSON types. (https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html).

Reimplemented in MysqlDriver.

Definition at line 407 of file KDbDriver.h.

◆ timeToSql()

KDbEscapedString KDbDriver::timeToSql ( const QVariant v) const
virtual

Converts time value to string.

Default implementation uses KDb::timeToIsoString().

Not compatible with all drivers - reimplement.

Since
3.2.0

Definition at line 255 of file KDbDriver.cpp.

◆ transactionsSupported()

bool KDbDriver::transactionsSupported ( ) const
Returns
true if transaction are supported (single or multiple).

Definition at line 111 of file KDbDriver.cpp.

◆ unicodeFunctionToString()

KDbEscapedString KDbDriver::unicodeFunctionToString ( const KDbNArgExpression args,
KDbQuerySchemaParameterValueListIterator params,
KDb::ExpressionCallStack callStack 
) const
virtual

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

Default implementation USES UNICODE(). Special case is for MYSQL and PostgreSQL.

Reimplemented in PostgresqlDriver, and MysqlDriver.

Definition at line 380 of file KDbDriver.cpp.

◆ valueToSql() [1/3]

KDbEscapedString KDbDriver::valueToSql ( const KDbField field,
const QVariant v 
) const
inline

Like above method, for field.

Definition at line 162 of file KDbDriver.h.

◆ valueToSql() [2/3]

KDbEscapedString KDbDriver::valueToSql ( const QString ftype,
const QVariant v 
) const
inline

Like above but with the fildtype as string.

Definition at line 157 of file KDbDriver.h.

◆ valueToSql() [3/3]

KDbEscapedString KDbDriver::valueToSql ( KDbField::Type  ftype,
const QVariant v 
) const
virtual

Escapes and converts value v (for type ftype) to string representation required by SQL commands. Reimplement this if you need other behavior (eg. for 'date' type handling) This implementation return date, datetime and time values in ISO format, what seems to be accepted by SQL servers.

See also
Qt::DateFormat
Note
it was compatible with SQLite: https://www.sqlite.org/lang_datefunc.html

Definition at line 244 of file KDbDriver.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 Aug 17 2022 04:05:00 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.