MysqlDriver

Search for usage in LXR

#include <MysqlDriver.h>

Inheritance diagram for MysqlDriver:

Public Member Functions

 MysqlDriver (QObject *parent, const QVariantList &args)
 
KDbEscapedString concatenateFunctionToString (const KDbBinaryExpression &args, KDbQuerySchemaParameterValueListIterator *params, KDb::ExpressionCallStack *callStack) const
 
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
 
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
 
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
 
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
 
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 ()
 

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
 
bool supportsDefaultValue (const KDbField &field) 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)
 
- 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
 
- 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)
 
- 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

MySQL database driver.

Definition at line 29 of file MysqlDriver.h.

Constructor & Destructor Documentation

◆ MysqlDriver()

MysqlDriver::MysqlDriver ( QObject parent,
const QVariantList &  args 
)

Constructor sets database features and maps the types in KDbField::Type to the MySQL types.

See: https://dev.mysql.com/doc/mysql/en/Column_types.html

Todo:
Implement buffered/unbuffered cursor, rather than buffer everything. Each MYSQL connection can only handle at most one unbuffered cursor, so MysqlConnection should keep count?
Todo:
add configuration option

Definition at line 40 of file MysqlDriver.cpp.

Member Function Documentation

◆ concatenateFunctionToString()

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

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

Uses CONCAT().

Definition at line 250 of file MysqlDriver.cpp.

◆ drv_createConnection()

KDbConnection * MysqlDriver::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 89 of file MysqlDriver.cpp.

◆ drv_escapeIdentifier() [1/2]

QByteArray MysqlDriver::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 209 of file MysqlDriver.cpp.

◆ drv_escapeIdentifier() [2/2]

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

Add back-ticks to an identifier, and replace any back-ticks within the name with single quotes.

Implements KDbDriver.

Definition at line 204 of file MysqlDriver.cpp.

◆ drv_isSystemFieldName()

bool MysqlDriver::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 108 of file MysqlDriver.cpp.

◆ escapeBLOB()

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

Escape BLOB value array.

Implements KDbDriver.

Definition at line 184 of file MysqlDriver.cpp.

◆ escapeString() [1/2]

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

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

Todo:
optimize using mysql_real_escape_string()? see https://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

Implements KDbDriver.

Definition at line 189 of file MysqlDriver.cpp.

◆ escapeString() [2/2]

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

Escape a string for use as a value.

Todo:
support more characters, like %, _
Todo:
move new_string to KDbDriver::m_new_string or so...

Implements KDbDriver.

Definition at line 125 of file MysqlDriver.cpp.

◆ greatestOrLeastFunctionToString()

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

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

Since MySQL'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 231 of file MysqlDriver.cpp.

◆ isSystemDatabaseName()

bool MysqlDriver::isSystemDatabaseName ( const QString name) const
overridevirtual
Returns
true if is "mysql", "information_schema" or "performance_schema".

Implements KDbDriver.

Definition at line 101 of file MysqlDriver.cpp.

◆ isSystemObjectName()

bool MysqlDriver::isSystemObjectName ( const QString name) const
overridevirtual
Returns
false for this driver.

Implements KDbDriver.

Definition at line 95 of file MysqlDriver.cpp.

◆ lengthFunctionToString()

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

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

char_length(val) is used because length(val) in mysql returns number of bytes, what is not right for multibyte (unicode) encodings. *‍/

Reimplemented from KDbDriver.

Definition at line 223 of file MysqlDriver.cpp.

◆ sqlTypeName()

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

Overrides the default implementation.

Reimplemented from KDbDriver.

Definition at line 215 of file MysqlDriver.cpp.

◆ supportsDefaultValue()

bool MysqlDriver::supportsDefaultValue ( const KDbField field) const
overrideprotectedvirtual
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 from KDbDriver.

Definition at line 114 of file MysqlDriver.cpp.

◆ unicodeFunctionToString()

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

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

Uses ORD(CONVERT(X USING UTF16)).

Reimplemented from KDbDriver.

Definition at line 240 of file MysqlDriver.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.