Wt  4.11.1
Public Member Functions | List of all members
Wt::Dbo::backend::MySQL Class Reference

A MySQL connection. More...

#include <Wt/Dbo/backend/MySQL.h>

Inheritance diagram for Wt::Dbo::backend::MySQL:
[legend]

Public Member Functions

 MySQL (const std::string &db, const std::string &dbuser="root", const std::string &dbpasswd="", const std::string dbhost="localhost", unsigned int dbport=0, const std::string &dbsocket="/var/run/mysqld/mysqld.sock", int fractionalSecondsPart=-1)
 Opens a new MySQL backend connection. More...
 
 MySQL (const MySQL &other)
 Copies a MySQL connection. More...
 
 ~MySQL ()
 Destructor. More...
 
virtual std::unique_ptr< SqlConnectionclone () const override
 Returns a copy of the connection.
 
bool connect (const std::string &db, const std::string &dbuser="root", const std::string &dbpasswd="", const std::string &dbhost="localhost", unsigned int dbport=0, const std::string &dbsocket="/var/run/mysqld/mysqld.sock")
 Tries to connect. More...
 
MySQL_impl * connection ()
 Returns the underlying connection.
 
virtual void executeSql (const std::string &sql) override
 Executes an SQL statement. More...
 
virtual void startTransaction () override
 Starts a transaction. More...
 
virtual void commitTransaction () override
 Commits a transaction. More...
 
virtual void rollbackTransaction () override
 Rolls back a transaction. More...
 
virtual std::unique_ptr< SqlStatementprepareStatement (const std::string &sql) override
 Prepares a statement. More...
 
int getFractionalSecondsPart () const
 Returns the supported fractional seconds part. More...
 
void setFractionalSecondsPart (int fractionalSecondsPart)
 Set the supported fractional seconds part. More...
 
Methods that return dialect information
virtual std::string autoincrementSql () const override
 Returns the 'autoincrement' SQL type modifier. More...
 
virtual std::string autoincrementType () const override
 Returns the 'autoincrement' SQL type. More...
 
virtual std::string autoincrementInsertSuffix (const std::string &id) const override
 Returns the suffix for an 'autoincrement' insert statement. More...
 
virtual std::vector< std::string > autoincrementCreateSequenceSql (const std::string &table, const std::string &id) const override
 Returns the SQL statement(s) required to create an id sequence. More...
 
virtual std::vector< std::string > autoincrementDropSequenceSql (const std::string &table, const std::string &id) const override
 Returns the SQL statement(s) required to drop an id sequence. More...
 
virtual const char * dateTimeType (SqlDateTimeType type) const override
 Returns the date/time type. More...
 
virtual const char * blobType () const override
 Returns the blob type. More...
 
virtual bool supportAlterTable () const override
 Returns true if the backend support Alter Table. More...
 
virtual const char * alterTableConstraintString () const override
 Returns the command used in alter table .. drop constraint .. More...
 
virtual bool requireSubqueryAlias () const override
 Returns the true if the database require subquery alias. More...
 
- Public Member Functions inherited from Wt::Dbo::SqlConnection
virtual ~SqlConnection ()
 Destructor.
 
virtual void executeSqlStateful (const std::string &sql)
 Executes a connection-stateful SQL statement. More...
 
virtual SqlStatementgetStatement (const std::string &id) const
 Returns the statement with the given id. More...
 
virtual void saveStatement (const std::string &id, std::unique_ptr< SqlStatement > statement)
 Saves a statement with the given id. More...
 
void setProperty (const std::string &name, const std::string &value)
 Sets a property. More...
 
std::string property (const std::string &name) const
 Returns a property. More...
 
virtual std::string autoincrementInsertInfix (const std::string &id) const
 Returns the infix for an 'autoincrement' insert statement. More...
 
virtual void prepareForDropTables ()
 Execute code before dropping the tables. More...
 
virtual std::string textType (int size) const
 Returns the text type. More...
 
virtual std::string longLongType () const
 Returns the 64-bit integer type. More...
 
virtual const char * booleanType () const
 Returns the boolean type. More...
 
virtual bool supportUpdateCascade () const
 Returns true if the database supports Update Cascade. More...
 
virtual LimitQuery limitQueryMethod () const
 
virtual bool usesRowsFromTo () const
 Returns whether the SQL dialect uses 'ROWS ? TO ?', limit or rownum for partial select results. More...
 
virtual bool supportDeferrableFKConstraint () const
 Returns true if the backend supports "deferrable initially deferred" foreign key constraints. More...
 

Detailed Description

A MySQL connection.

This class provides the backend implementation for mariadb databases. It has been tested against MySQL 5.6.

In order to work properly with Wt::Dbo, MySQL must be configured with InnoDB (for MySQL) or XtraDB (for mariadb) as the default database engine - so that the transaction based functionality works.

Note
There is a bug in the implementation of milliseconds in mariadb C client which affects WTime and posix::time_duration values – it goes berserk when fractional part = 0.

Constructor & Destructor Documentation

◆ MySQL() [1/2]

Wt::Dbo::backend::MySQL::MySQL ( const std::string &  db,
const std::string &  dbuser = "root",
const std::string &  dbpasswd = "",
const std::string  dbhost = "localhost",
unsigned int  dbport = 0,
const std::string &  dbsocket = "/var/run/mysqld/mysqld.sock",
int  fractionalSecondsPart = -1 
)

Opens a new MySQL backend connection.

For the connection parameter description, please refer to the connect() method.

Parameters
fractionalSecondsPartThe number of fractional units (0 to 6). A value of -1 indicates that the fractional part is not stored. Fractional seconds part are supported for MySQL 5.6.4 http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

◆ MySQL() [2/2]

Wt::Dbo::backend::MySQL::MySQL ( const MySQL other)

Copies a MySQL connection.

This creates a new connection with the same settings as another connection.

See also
clone()

◆ ~MySQL()

Wt::Dbo::backend::MySQL::~MySQL ( )

Destructor.

Closes the connection.

Member Function Documentation

◆ alterTableConstraintString()

const char * Wt::Dbo::backend::MySQL::alterTableConstraintString ( ) const
overridevirtual

Returns the command used in alter table .. drop constraint ..

This method will return "constraint" by default. Default: ALTER TABLE .. DROP CONSTRAINT ..

Reimplemented from Wt::Dbo::SqlConnection.

◆ autoincrementCreateSequenceSql()

std::vector< std::string > Wt::Dbo::backend::MySQL::autoincrementCreateSequenceSql ( const std::string &  table,
const std::string &  id 
) const
overridevirtual

Returns the SQL statement(s) required to create an id sequence.

This is used by Session::createTables() to create the id sequence for a table. The table's name and primary key are passed as arguments to this function and can be used to construct an SQL sequence that is unique for the table.

Implements Wt::Dbo::SqlConnection.

◆ autoincrementDropSequenceSql()

std::vector< std::string > Wt::Dbo::backend::MySQL::autoincrementDropSequenceSql ( const std::string &  table,
const std::string &  id 
) const
overridevirtual

Returns the SQL statement(s) required to drop an id sequence.

This is used by Session::dropTables() to drop the id sequence for a table. The table's name and primary key are passed as arguments to this function and can be used to construct an SQL sequence that is unique for the table.

Implements Wt::Dbo::SqlConnection.

◆ autoincrementInsertSuffix()

std::string Wt::Dbo::backend::MySQL::autoincrementInsertSuffix ( const std::string &  id) const
overridevirtual

Returns the suffix for an 'autoincrement' insert statement.

This is appended to the insert statement, since some back-ends need to be indicated that they should return the autoincrement id.

Implements Wt::Dbo::SqlConnection.

◆ autoincrementSql()

std::string Wt::Dbo::backend::MySQL::autoincrementSql ( ) const
overridevirtual

Returns the 'autoincrement' SQL type modifier.

This is used by Session::createTables() to create the id column.

Implements Wt::Dbo::SqlConnection.

◆ autoincrementType()

std::string Wt::Dbo::backend::MySQL::autoincrementType ( ) const
overridevirtual

Returns the 'autoincrement' SQL type.

This is used by Session::createTables() to create the id column.

Implements Wt::Dbo::SqlConnection.

◆ blobType()

const char * Wt::Dbo::backend::MySQL::blobType ( ) const
overridevirtual

◆ commitTransaction()

void Wt::Dbo::backend::MySQL::commitTransaction ( )
overridevirtual

Commits a transaction.

This function commits a transaction.

Implements Wt::Dbo::SqlConnection.

◆ connect()

bool Wt::Dbo::backend::MySQL::connect ( const std::string &  db,
const std::string &  dbuser = "root",
const std::string &  dbpasswd = "",
const std::string &  dbhost = "localhost",
unsigned int  dbport = 0,
const std::string &  dbsocket = "/var/run/mysqld/mysqld.sock" 
)

Tries to connect.

Parameters
dbThe database name.
dbuserThe username for the database connection - defaults to "root".
dbpasswdThe password for the database conection - defaults to an empty string.
dbhostThe hostname of the database - defaults to localhost.
dbportThe portnumber - defaults to a default port.
dbsocketThe socket to use.

Throws an exception if there was a problem, otherwise true.

◆ dateTimeType()

const char * Wt::Dbo::backend::MySQL::dateTimeType ( SqlDateTimeType  type) const
overridevirtual

◆ executeSql()

void Wt::Dbo::backend::MySQL::executeSql ( const std::string &  sql)
overridevirtual

Executes an SQL statement.

This is a convenience method for preparing a statement, executing it, and deleting it.

Reimplemented from Wt::Dbo::SqlConnection.

◆ getFractionalSecondsPart()

int Wt::Dbo::backend::MySQL::getFractionalSecondsPart ( ) const

Returns the supported fractional seconds part.

By default return -1: fractional part is not stored. Fractional seconds part is supported for MySQL 5.6.4 http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

See also
setFractionalSecondsPart()

◆ prepareStatement()

std::unique_ptr< SqlStatement > Wt::Dbo::backend::MySQL::prepareStatement ( const std::string &  sql)
overridevirtual

Prepares a statement.

Returns the prepared statement.

Implements Wt::Dbo::SqlConnection.

◆ requireSubqueryAlias()

virtual bool Wt::Dbo::backend::MySQL::requireSubqueryAlias ( ) const
overridevirtual

Returns the true if the database require subquery alias.

This method will return false by default.

Reimplemented from Wt::Dbo::SqlConnection.

◆ rollbackTransaction()

void Wt::Dbo::backend::MySQL::rollbackTransaction ( )
overridevirtual

Rolls back a transaction.

This function rolls back a transaction.

Implements Wt::Dbo::SqlConnection.

◆ setFractionalSecondsPart()

void Wt::Dbo::backend::MySQL::setFractionalSecondsPart ( int  fractionalSecondsPart)

Set the supported fractional seconds part.

The fractional seconds part can be also set in the constructor Fractional seconds part is supported for MySQL 5.6.4 http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

Parameters
fractionalSecondsPartMust be in the range 0 to 6.
See also
setFractionalSecondsPart()

◆ startTransaction()

void Wt::Dbo::backend::MySQL::startTransaction ( )
overridevirtual

Starts a transaction.

This function starts a transaction.

Implements Wt::Dbo::SqlConnection.

◆ supportAlterTable()

bool Wt::Dbo::backend::MySQL::supportAlterTable ( ) const
overridevirtual

Returns true if the backend support Alter Table.

This method will return false by default.

Reimplemented from Wt::Dbo::SqlConnection.