diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
index edd52d2..35a4bc8 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/Mini.php
@@ -57,7 +57,7 @@ public function query() {
 
     // Don't query for the next page if we have a pager that has a limited
     // amount of pages.
-    if (empty($this->options['total_pages']) || ($this->getCurrentPage() < $this->options['total_pages'])) {
+    if ($this->getItemsPerPage() > 0 && (empty($this->options['total_pages']) || ($this->getCurrentPage() < $this->options['total_pages']))) {
       // Increase the items in the query in order to be able to find out whether
       // there is another page.
       $limit = $this->view->query->getLimit();
@@ -79,7 +79,7 @@ public function useCountQuery() {
   public function postExecute(&$result) {
     // In query() one more item might have been retrieved than necessary. If so,
     // the next link needs to be displayed and the item removed.
-    if (count($result) > $this->getItemsPerPage()) {
+    if ($this->getItemsPerPage() > 0 && count($result) > $this->getItemsPerPage()) {
       array_pop($result);
       // Make sure the pager shows the next link by setting the total items to
       // the biggest possible number but prevent failing calculations like
@@ -89,7 +89,7 @@ public function postExecute(&$result) {
     else {
       $total = $this->getCurrentPage() * $this->getItemsPerPage() + count($result);
     }
-    pager_default_initialize($total, $this->getItemsPerPage(), $this->options['id']);
+    $this->total_items = $total;
   }
 
   /**
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
index 9994cf5..fed8f5a 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
@@ -183,13 +183,12 @@ public function executeCountQuery(&$count_query) {
       $this->total_items -= $this->options['offset'];
     }
 
-    $this->updatePageInfo();
     return $this->total_items;
   }
 
   /**
    * If there are pagers that need global values set, this method can
-   * be used to set them. It will be called when the count query is run.
+   * be used to set them. It will be called after the query is run.
    */
   public function updatePageInfo() {
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php b/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
index 2ba6eb6..8162b2c 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/query/Sql.php
@@ -1431,9 +1431,8 @@ function execute(ViewExecutable $view) {
         }
 
         $view->pager->postExecute($view->result);
-        if ($view->pager->useCountQuery() || !empty($view->get_total_rows)) {
-          $view->total_rows = $view->pager->getTotalItems();
-        }
+        $view->pager->updatePageInfo();
+        $view->total_rows = $view->pager->getTotalItems();
 
         // Load all entities contained in the results.
         $this->loadEntities($view->result);
diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/MiniPagerTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/MiniPagerTest.php
index b2accae..869f01b 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/MiniPagerTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/MiniPagerTest.php
@@ -91,6 +91,13 @@ public function testMiniPagerRender() {
     $this->assertText('‹‹');
     $this->assertText($this->nodes[19]->label());
 
+    $this->drupalGet('test_mini_pager_all');
+    $this->assertNoText('‹‹ test', 'The previous link does not appear on the page.');
+    $this->assertText('Page 1', 'The current page info shows the only page.');
+    $this->assertNoText('test ››', 'The next link does not appear on the page.');
+    $result = $this->xpath('//div[contains(@class, "views-row")]');
+    $this->assertEqual(count($result), count($this->nodes), 'All rows appear on the page.');
+
     // Remove all items beside 1, so there should be no links shown.
     for ($i = 0; $i < 19; $i++) {
       $this->nodes[$i]->delete();
@@ -105,7 +112,7 @@ public function testMiniPagerRender() {
     $view = views_get_view('test_mini_pager');
     $this->executeView($view);
     $this->assertIdentical($view->get_total_rows, NULL, 'The query was not forced to calculate the total number of results.');
-    $this->assertIdentical($view->total_rows, NULL, 'The query did not return the total number of rows.');
+    $this->assertIdentical($view->total_rows, 1, 'The query returned the total number of rows.');
   }
 
 }
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
index 9483274..9a3ebb3 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_mini_pager.yml
@@ -97,6 +97,19 @@ display:
         type: mini
         options:
           items_per_page: '1'
+  page_3:
+    display_plugin: page
+    id: page_3
+    display_title: Page
+    position: ''
+    display_options:
+      path: test_mini_pager_all
+      defaults:
+        pager: '0'
+      pager:
+        type: mini
+        options:
+          items_per_page: '0'
 base_field: nid
 status: '1'
 module: views
