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)
 
QBindable< QStringbindableObjectName ()
 
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 () const const
 
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 QRegularExpression &re, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (Qt::FindChildOptions options) const const
 
bool inherits (const char *className) const const
 
void installEventFilter (QObject *filterObj)
 
bool isQuickItemType () const const
 
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_EMIT Q_EMIT
 
 Q_ENUM (...)
 
 Q_ENUM_NS (...)
 
 Q_ENUMS (...)
 
 Q_FLAG (...)
 
 Q_FLAG_NS (...)
 
 Q_FLAGS (...)
 
 Q_GADGET Q_GADGET
 
 Q_GADGET_EXPORT (EXPORT_MACRO)
 
 Q_INTERFACES (...)
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_MOC_INCLUDE Q_MOC_INCLUDE
 
 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
 
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 setObjectName (QAnyStringView name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool setProperty (const char *name, QVariant &&value)
 
bool signalsBlocked () const const
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds interval, 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)
 
- 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.

◆ ~MysqlDriver()

MysqlDriver::~MysqlDriver ( )
override

Definition at line 85 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-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:21:01 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.