/** @var int Combine list with OR clauses */
const LIST_OR = 4;
- /** @var int Enable debug logging */
+ /** @var int Enable debug logging of all SQL queries */
const DBO_DEBUG = 1;
- /** @var int Disable query buffering (only one result set can be iterated at a time) */
+ /** @var int Unused since 1.34 */
const DBO_NOBUFFER = 2;
- /** @var int Ignore query errors (internal use only!) */
+ /** @var int Unused since 1.31 */
const DBO_IGNORE = 4;
/** @var int Automatically start a transaction before running a query if none is active */
const DBO_TRX = 8;
*/
public function getServerInfo();
- /**
- * Turns buffering of SQL result sets on (true) or off (false). Default is "on".
- *
- * Unbuffered queries are very troublesome in MySQL:
- *
- * - If another query is executed while the first query is being read
- * out, the first query is killed. This means you can't call normal
- * Database functions while you are reading an unbuffered query result
- * from a normal Database connection.
- *
- * - Unbuffered queries cause the MySQL server to use large amounts of
- * memory and to hold broad locks which block other queries.
- *
- * If you want to limit client-side memory, it's almost always better to
- * split up queries into batches using a LIMIT clause than to switch off
- * buffering.
- *
- * @param null|bool $buffer
- * @return null|bool The previous value of the flag
- */
- public function bufferResults( $buffer = null );
-
/**
* Gets the current transaction level.
*
*/
public function setLazyMasterHandle( IDatabase $conn );
- /**
- * Returns true if this database does an implicit sort when doing GROUP BY
- *
- * @return bool
- * @deprecated Since 1.30; only use grouped or aggregated fields in the SELECT
- */
- public function implicitGroupby();
-
/**
* Returns true if this database does an implicit order by when the column has an index
* For example: SELECT page_title FROM page LIMIT 1
*/
public function lastQuery();
- /**
- * Returns true if the connection may have been used for write queries.
- * Should return true if unsure.
- *
- * @return bool
- * @deprecated Since 1.31; use lastDoneWrites()
- */
- public function doneWrites();
-
/**
* Returns the last time the connection may have been used for write queries.
* Should return a timestamp if unsure.
/**
* Set a flag for this connection
*
- * @param int $flag DBO_* constants from Defines.php:
- * - DBO_DEBUG: output some debug info (same as debug())
- * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
- * - DBO_TRX: automatically start transactions
- * - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
- * and removes it in command line mode
- * - DBO_PERSISTENT: use persistant database connection
+ * @param int $flag One of (IDatabase::DBO_DEBUG, IDatabase::DBO_TRX)
* @param string $remember IDatabase::REMEMBER_* constant [default: REMEMBER_NOTHING]
*/
public function setFlag( $flag, $remember = self::REMEMBER_NOTHING );
/**
* Clear a flag for this connection
*
- * @param int $flag DBO_* constants from Defines.php:
- * - DBO_DEBUG: output some debug info (same as debug())
- * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
- * - DBO_TRX: automatically start transactions
- * - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
- * and removes it in command line mode
- * - DBO_PERSISTENT: use persistant database connection
+ * @param int $flag One of (IDatabase::DBO_DEBUG, IDatabase::DBO_TRX)
* @param string $remember IDatabase::REMEMBER_* constant [default: REMEMBER_NOTHING]
*/
public function clearFlag( $flag, $remember = self::REMEMBER_NOTHING );
/**
* Returns a boolean whether the flag $flag is set for this connection
*
- * @param int $flag DBO_* constants from Defines.php:
- * - DBO_DEBUG: output some debug info (same as debug())
- * - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
- * - DBO_TRX: automatically start transactions
- * - DBO_PERSISTENT: use persistant database connection
+ * @param int $flag One of the class IDatabase::DBO_* constants
* @return bool
*/
public function getFlag( $flag );
*/
public function getDomainID();
- /**
- * Alias for getDomainID()
- *
- * @return string
- * @deprecated 1.30
- */
- public function getWikiID();
-
/**
* Get the type of the DBMS, as it appears in $wgDBtype.
*
* and then the first rows are taken until the limit is reached. LIMIT
* is applied to a result set after OFFSET.
*
- * - FOR UPDATE: Boolean: lock the returned rows so that they can't be
+ * - LOCK IN SHARE MODE: Boolean: lock the returned rows so that they can't be
* changed until the next COMMIT. Cannot be used with aggregate functions
* (COUNT, MAX, etc., but also DISTINCT).
*
+ * - FOR UPDATE: Boolean: lock the returned rows so that they can't be
+ * changed nor read with LOCK IN SHARE MODE until the next COMMIT.
+ * Cannot be used with aggregate functions (COUNT, MAX, etc., but also DISTINCT).
+ *
* - DISTINCT: Boolean: return only unique result rows.
*
* - GROUP BY: May be either an SQL fragment string naming a field or
* And also the following boolean MySQL extensions, see the MySQL manual
* for documentation:
*
- * - LOCK IN SHARE MODE
* - STRAIGHT_JOIN
- * - HIGH_PRIORITY
* - SQL_BIG_RESULT
* - SQL_BUFFER_RESULT
* - SQL_SMALL_RESULT
* - SQL_CALC_FOUND_ROWS
- * - SQL_CACHE
- * - SQL_NO_CACHE
- *
*
* @param string|array $join_conds Join conditions
*
* for logging and profiling.
* @param array $options An array of UPDATE options, can be:
* - IGNORE: Ignore unique key conflicts
- * - LOW_PRIORITY: MySQL-specific, see MySQL manual.
* @return bool Return true if no exception was thrown (deprecated since 1.33)
* @throws DBError
*/
*
* @param string $db
* @return bool True unless an exception was thrown
- * @throws DBConnectionError If databasesAreIndependent() is true and an error occurs
- * @throws DBError
+ * @throws DBConnectionError If databasesAreIndependent() is true and connection change fails
+ * @throws DBError On query error or if database changes are disallowed
* @deprecated Since 1.32 Use selectDomain() instead
*/
public function selectDB( $db );
* This should only be called by a load balancer or if the handle is not attached to one
*
* @param string|DatabaseDomain $domain
+ * @throws DBConnectionError If databasesAreIndependent() is true and connection change fails
+ * @throws DBError On query error, if domain changes are disallowed, or the domain is invalid
* @since 1.32
- * @throws DBConnectionError
*/
public function selectDomain( $domain );