MysqlDriver
#include <MysqlDriver.h>
Protected Member Functions | |
KDbConnection * | drv_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) |
KDbDriverBehavior * | behavior () |
const KDbDriverBehavior * | behavior () const |
virtual KDbAdminTools * | drv_createAdminTools () const |
void | initDriverSpecificKeywords (const char *const *keywords) |
virtual bool | isValid () |
KDbConnection * | removeConnection (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 |
QObject * | sender () 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 } |
Public Types inherited from QObject | |
typedef | QObjectList |
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) |
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()
|
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()
|
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]
|
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]
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()
|
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()
|
overridevirtual |
◆ escapeString() [1/2]
|
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]
|
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()
|
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()
|
overridevirtual |
- Returns
- true if is "mysql", "information_schema" or "performance_schema".
Implements KDbDriver.
Definition at line 101 of file MysqlDriver.cpp.
◆ isSystemObjectName()
|
overridevirtual |
◆ lengthFunctionToString()
|
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()
|
overridevirtual |
Overrides the default implementation.
Reimplemented from KDbDriver.
Definition at line 215 of file MysqlDriver.cpp.
◆ supportsDefaultValue()
|
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()
|
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:
Documentation copyright © 1996-2024 The KDE developers.
Generated on Mon Nov 18 2024 12:19:08 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.