Merge "Document SearchDatabase::doSearchTextInDB to return null"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 1 Aug 2019 21:51:36 +0000 (21:51 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 1 Aug 2019 21:51:36 +0000 (21:51 +0000)
1  2 
includes/search/SearchDatabase.php
includes/search/SearchOracle.php
includes/search/SearchSqlite.php

@@@ -51,7 -51,7 +51,7 @@@ abstract class SearchDatabase extends S
  
        /**
         * @param string $term
 -       * @return SearchResultSet|Status|null
 +       * @return ISearchResultSet|Status|null
         */
        final public function doSearchText( $term ) {
                return $this->doSearchTextInDB( $this->extractNamespacePrefix( $term ) );
         * Perform a full text search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        abstract protected function doSearchTextInDB( $term );
  
        /**
         * @param string $term
 -       * @return SearchResultSet|null
 +       * @return ISearchResultSet|null
         */
        final public function doSearchTitle( $term ) {
                return $this->doSearchTitleInDB( $this->extractNamespacePrefix( $term ) );
@@@ -77,7 -77,7 +77,7 @@@
         * Perform a title-only search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        abstract protected function doSearchTitleInDB( $term );
  
@@@ -64,11 -64,11 +64,11 @@@ class SearchOracle extends SearchDataba
         * Perform a full text search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        protected function doSearchTextInDB( $term ) {
                if ( $term == '' ) {
-                       return new SqlSearchResultSet( false, '' );
+                       return null;
                }
  
                $dbr = $this->lb->getConnectionRef( DB_REPLICA );
         * Perform a title-only search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        protected function doSearchTitleInDB( $term ) {
                if ( $term == '' ) {
-                       return new SqlSearchResultSet( false, '' );
+                       return null;
                }
  
                $dbr = $this->lb->getConnectionRef( DB_REPLICA );
         * @param string $text
         */
        function update( $id, $title, $text ) {
 -              $dbw = $this->lb->getConnection( DB_MASTER );
 +              $dbw = $this->lb->getMaintenanceConnectionRef( DB_MASTER );
                $dbw->replace( 'searchindex',
                        [ 'si_page' ],
                        [
@@@ -33,15 -33,11 +33,15 @@@ class SearchSqlite extends SearchDataba
         * Whether fulltext search is supported by current schema
         * @return bool
         */
 -      function fulltextSearchSupported() {
 +      private function fulltextSearchSupported() {
 +              // Avoid getConnectionRef() in order to get DatabaseSqlite specifically
                /** @var DatabaseSqlite $dbr */
                $dbr = $this->lb->getConnection( DB_REPLICA );
 -
 -              return $dbr->checkForEnabledSearch();
 +              try {
 +                      return $dbr->checkForEnabledSearch();
 +              } finally {
 +                      $this->lb->reuseConnection( $dbr );
 +              }
        }
  
        /**
         * Perform a full text search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        protected function doSearchTextInDB( $term ) {
                return $this->searchInternal( $term, true );
         * Perform a title-only search query and return a result set.
         *
         * @param string $term Raw search term
-        * @return SqlSearchResultSet
+        * @return SqlSearchResultSet|null
         */
        protected function doSearchTitleInDB( $term ) {
                return $this->searchInternal( $term, false );
         * @param string $title
         * @param string $text
         */
 -      function update( $id, $title, $text ) {
 +      public function update( $id, $title, $text ) {
                if ( !$this->fulltextSearchSupported() ) {
                        return;
                }
         * @param int $id
         * @param string $title
         */
 -      function updateTitle( $id, $title ) {
 +      public function updateTitle( $id, $title ) {
                if ( !$this->fulltextSearchSupported() ) {
                        return;
                }