diff --git a/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php b/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php
index 0eac141..6bf48b4 100644
--- a/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php
@@ -216,6 +216,7 @@ protected function initializeIterator() {
       $high_water_field = $this->getHighWaterField();
       $conditions->condition($high_water_field, $high_water, '>');
       $this->query->orderBy($high_water_field);
+      $condition_added = TRUE;
     }
     if ($condition_added) {
       $this->query->condition($conditions);
diff --git a/core/modules/migrate/tests/src/Kernel/HighWaterNotJoinableTest.php b/core/modules/migrate/tests/src/Kernel/HighWaterNotJoinableTest.php
new file mode 100644
index 0000000..aafd748
--- /dev/null
+++ b/core/modules/migrate/tests/src/Kernel/HighWaterNotJoinableTest.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Drupal\Tests\migrate\Kernel;
+
+/**
+ * Tests the Drupal 6 comment source w/ high water handling.
+ *
+ * @covers \Drupal\migrate_sql_test\Plugin\migrate\source\HighWaterTest
+ * @group migrate
+ */
+class HighWaterNotJoinableTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate', 'migrate_drupal', 'migrate_sql_test'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+
+    $tests = [];
+
+    // The source data.
+    $tests[0]['source_data']['high_water_node'] = [
+      [
+        'id' => 1,
+        'title' => 'Item 1',
+        'changed' => 1,
+      ],
+      [
+        'id' => 2,
+        'title' => 'Item 2',
+        'changed' => 2,
+      ],
+      [
+        'id' => 3,
+        'title' => 'Item 3',
+        'changed' => 3,
+      ],
+    ];
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'id' => 2,
+        'title' => 'Item 2',
+        'changed' => 2,
+      ],
+      [
+        'id' => 3,
+        'title' => 'Item 3',
+        'changed' => 3,
+      ],
+    ];
+
+    $tests[0]['expected_count'] = NULL;
+    $tests[0]['configuration'] = [
+      'high_water_property' => [
+        'name' => 'changed',
+      ],
+    ];
+    $tests[0]['high_water'] = $tests[0]['source_data']['high_water_node'][0]['changed'];
+    return $tests;
+  }
+
+}
diff --git a/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php b/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php
index e3b2f8c..ad9e9e1 100644
--- a/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php
+++ b/core/modules/migrate/tests/src/Kernel/MigrateSourceTestBase.php
@@ -135,15 +135,25 @@ protected function getPlugin(array $configuration) {
    *   value (like FALSE or 'nope'), the source plugin will not be counted.
    * @param array $configuration
    *   (optional) Configuration for the source plugin.
+   * @param mixed $high_water
+   *   (optional) The value of the high water field.
    *
    * @dataProvider providerSource
    */
-  public function testSource(array $source_data, array $expected_data, $expected_count = NULL, array $configuration = []) {
+  public function testSource(array $source_data, array $expected_data, $expected_count = NULL, array $configuration = [], $high_water = NULL) {
     $plugin = $this->getPlugin($configuration);
 
     // All source plugins must define IDs.
     $this->assertNotEmpty($plugin->getIds());
 
+    // If there is a high water mark, set it in the high water storage.
+    if (isset($high_water)) {
+      $this->container
+        ->get('keyvalue')
+        ->get('migrate:high_water')
+        ->set($this->migration->reveal()->id(), $high_water);
+    }
+
     if (is_null($expected_count)) {
       $expected_count = count($expected_data);
     }
diff --git a/core/modules/migrate/tests/src/Kernel/MigrateSqlSourceTestBase.php b/core/modules/migrate/tests/src/Kernel/MigrateSqlSourceTestBase.php
index f04183f..90187c9 100644
--- a/core/modules/migrate/tests/src/Kernel/MigrateSqlSourceTestBase.php
+++ b/core/modules/migrate/tests/src/Kernel/MigrateSqlSourceTestBase.php
@@ -63,12 +63,14 @@ protected function getDatabase(array $source_data) {
    *   (optional) How many rows the source plugin is expected to return.
    * @param array $configuration
    *   (optional) Configuration for the source plugin.
+   * @param mixed $high_water
+   *   (optional) The value of the high water field.
    *
    * @dataProvider providerSource
    *
    * @requires extension pdo_sqlite
    */
-  public function testSource(array $source_data, array $expected_data, $expected_count = NULL, array $configuration = []) {
+  public function testSource(array $source_data, array $expected_data, $expected_count = NULL, array $configuration = [], $high_water = NULL) {
     $plugin = $this->getPlugin($configuration);
 
     // Since we don't yet inject the database connection, we need to use a
@@ -78,7 +80,7 @@ public function testSource(array $source_data, array $expected_data, $expected_c
     $property->setAccessible(TRUE);
     $property->setValue($plugin, $this->getDatabase($source_data));
 
-    parent::testSource($source_data, $expected_data, $expected_count, $configuration);
+    parent::testSource($source_data, $expected_data, $expected_count, $configuration, $high_water);
   }
 
 }
