Merge "Explicitly declare ImportReporter::reportPage() and override public"
[lhc/web/wiklou.git] / includes / db / IDatabase.php
index c72218a..8b1c3df 100644 (file)
@@ -472,7 +472,7 @@ interface IDatabase {
         * @return bool|mixed The value from the field, or false on failure.
         */
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = array()
+               $table, $var, $cond = '', $fname = __METHOD__, $options = []
        );
 
        /**
@@ -494,7 +494,7 @@ interface IDatabase {
         * @since 1.25
         */
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = array()
+               $table, $var, $cond = '', $fname = __METHOD__, $options = []
        );
 
        /**
@@ -640,7 +640,7 @@ interface IDatabase {
         */
        public function select(
                $table, $vars, $conds = '', $fname = __METHOD__,
-               $options = array(), $join_conds = array()
+               $options = [], $join_conds = []
        );
 
        /**
@@ -661,7 +661,7 @@ interface IDatabase {
         */
        public function selectSQLText(
                $table, $vars, $conds = '', $fname = __METHOD__,
-               $options = array(), $join_conds = array()
+               $options = [], $join_conds = []
        );
 
        /**
@@ -679,7 +679,7 @@ interface IDatabase {
         * @return stdClass|bool
         */
        public function selectRow( $table, $vars, $conds, $fname = __METHOD__,
-               $options = array(), $join_conds = array()
+               $options = [], $join_conds = []
        );
 
        /**
@@ -703,7 +703,7 @@ interface IDatabase {
         * @return int Row count
         */
        public function estimateRowCount(
-               $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array()
+               $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = []
        );
 
        /**
@@ -724,7 +724,7 @@ interface IDatabase {
         * @return int Row count
         */
        public function selectRowCount(
-               $tables, $vars = '*', $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array()
+               $tables, $vars = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -801,7 +801,7 @@ interface IDatabase {
         *
         * @return bool
         */
-       public function insert( $table, $a, $fname = __METHOD__, $options = array() );
+       public function insert( $table, $a, $fname = __METHOD__, $options = [] );
 
        /**
         * UPDATE wrapper. Takes a condition array and a SET array.
@@ -821,7 +821,7 @@ interface IDatabase {
         *   - LOW_PRIORITY: MySQL-specific, see MySQL manual.
         * @return bool
         */
-       public function update( $table, $values, $conds, $fname = __METHOD__, $options = array() );
+       public function update( $table, $values, $conds, $fname = __METHOD__, $options = [] );
 
        /**
         * Makes an encoded list of strings from an array
@@ -896,7 +896,7 @@ interface IDatabase {
         * @since 1.23
         */
        public function buildGroupConcatField(
-               $delim, $table, $field, $conds = '', $join_conds = array()
+               $delim, $table, $field, $conds = '', $join_conds = []
        );
 
        /**
@@ -1098,7 +1098,7 @@ interface IDatabase {
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = array(), $selectOptions = array()
+               $insertOptions = [], $selectOptions = []
        );
 
        /**
@@ -1183,14 +1183,13 @@ interface IDatabase {
        public function wasReadOnlyError();
 
        /**
-        * Wait for the slave to catch up to a given master position.
+        * Wait for the slave to catch up to a given master position
         *
         * @param DBMasterPos $pos
-        * @param int $timeout The maximum number of seconds to wait for
-        *   synchronisation
-        * @return int Zero if the slave was past that position already,
+        * @param int $timeout The maximum number of seconds to wait for synchronisation
+        * @return int|null Zero if the slave was past that position already,
         *   greater than zero if we waited for some period of time, less than
-        *   zero if we timed out.
+        *   zero if it timed out, and null on error
         */
        public function masterPosWait( DBMasterPos $pos, $timeout );
 
@@ -1219,6 +1218,8 @@ interface IDatabase {
         * after the database is updated so that the jobs will see the data when they actually run.
         * It can also be used for updates that easily cause deadlocks if locks are held too long.
         *
+        * Updates will execute in the order they were enqueued.
+        *
         * @param callable $callback
         * @since 1.20
         */
@@ -1232,6 +1233,8 @@ interface IDatabase {
         * This is useful for updates that easily cause deadlocks if locks are held too long
         * but where atomicity is strongly desired for these updates and some related updates.
         *
+        * Updates will execute in the order they were enqueued.
+        *
         * @param callable $callback
         * @since 1.22
         */
@@ -1330,9 +1333,13 @@ interface IDatabase {
         * @param string $fname
         * @param string $flush Flush flag, set to 'flush' to disable warnings about
         *   explicitly committing implicit transactions, or calling commit when no
-        *   transaction is in progress. This will silently break any ongoing
-        *   explicit transaction. Only set the flush flag if you are sure that it
-        *   is safe to ignore these warnings in your context.
+        *   transaction is in progress.
+        *
+        *   This will trigger an exception if there is an ongoing explicit transaction.
+        *
+        *   Only set the flush flag if you are sure that these warnings are not applicable,
+        *   and no explicit transactions are open.
+        *
         * @throws DBUnexpectedError
         */
        public function commit( $fname = __METHOD__, $flush = '' );
@@ -1489,8 +1496,8 @@ interface IDatabase {
         * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to aquire
-        * @param string $method Name of method calling us
-        * @param int $timeout
+        * @param string $method Name of the calling method
+        * @param int $timeout Acquisition timeout in seconds
         * @return bool
         */
        public function lock( $lockName, $method, $timeout = 5 );
@@ -1501,7 +1508,7 @@ interface IDatabase {
         * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to release
-        * @param string $method Name of method calling us
+        * @param string $method Name of the calling method
         *
         * @return int Returns 1 if the lock was released, 0 if the lock was not established
         * by this thread (in which case the lock is not released), and NULL if the named
@@ -1509,6 +1516,25 @@ interface IDatabase {
         */
        public function unlock( $lockName, $method );
 
+       /**
+        * Acquire a named lock, flush any transaction, and return an RAII style unlocker object
+        *
+        * This is suitiable for transactions that need to be serialized using cooperative locks,
+        * where each transaction can see each others' changes. Any transaction is flushed to clear
+        * out stale REPEATABLE-READ snapshot data. Once the returned object falls out of PHP scope,
+        * any transaction will be committed and the lock will be released.
+        *
+        * If the lock acquisition failed, then no transaction flush happens, and null is returned.
+        *
+        * @param string $lockKey Name of lock to release
+        * @param string $fname Name of the calling method
+        * @param int $timeout Acquisition timeout in seconds
+        * @return ScopedCallback|null
+        * @throws DBUnexpectedError
+        * @since 1.27
+        */
+       public function getScopedLockAndFlush( $lockKey, $fname, $timeout );
+
        /**
         * Check to see if a named lock used by lock() use blocking queues
         *