diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ParallelIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ParallelIterators.java
index da9a819..989a7be 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ParallelIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ParallelIterators.java
@@ -269,7 +269,7 @@
                 }
             });
             boolean clearedCache = false;
-            byte[] tableName = tableRef.getTable().getName().getBytes();
+            byte[] tableName = tableRef.getTable().getPhysicalName().getBytes();
             for (Pair<KeyRange,Future<PeekingResultIterator>> future : futures) {
                 try {
                     PeekingResultIterator iterator = future.getSecond().get(timeoutMs, TimeUnit.MILLISECONDS);
@@ -320,7 +320,7 @@
             List<Pair<KeyRange,Future<PeekingResultIterator>>> futures) {
         final ConnectionQueryServices services = context.getConnection().getQueryServices();
         ExecutorService executor = services.getExecutor();
-        for (KeyRange split : splits) {
+        for (final KeyRange split : splits) {
             final Scan splitScan = ScanUtil.newScan(context.getScan());
             // Intersect with existing start/stop key if the table is salted
             // If not salted, we've already intersected it. If salted, we need
@@ -331,7 +331,12 @@
                 if (minMaxRange != null) {
                     // Add salt byte based on current split, as minMaxRange won't have it
                     minMaxRange = SaltingUtil.addSaltByte(split.getLowerRange(), minMaxRange);
-                    split = split.intersect(minMaxRange);
+                    // FIXME: seems like this should be possible when we set the scan start/stop
+                    // in StatementContext.setScanRanges(). If it doesn't intersect the range for
+                    // one salt byte, I don't see how it could intersect it with any of them.
+                    if (!ScanUtil.intersectScanRange(splitScan, minMaxRange.getLowerRange(), minMaxRange.getUpperRange())) {
+                        continue; // Skip this chunk if no intersection based on minMaxRange
+                    }
                 }
             }
             if (ScanUtil.intersectScanRange(splitScan, split.getLowerRange(), split.getUpperRange(), this.context.getScanRanges().useSkipScanFilter())) {
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index 9eaddf0..7c9332d 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -933,6 +933,7 @@
                     if (dropMetadata) {
                         admin.disableTable(physicalIndexName);
                         admin.deleteTable(physicalIndexName);
+                        clearTableRegionCache(physicalIndexName);
                         wasDeleted = true;
                     }
                 }
@@ -1066,6 +1067,7 @@
                     if ( admin.tableExists(tableName) ) {
                         admin.disableTable(tableName);
                         admin.deleteTable(tableName);
+                        clearTableRegionCache(tableName);
                     }
                 }
             }
