This is an automated email from the ASF dual-hosted git repository.

gortiz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 35bb12a230 Add tests for DUAL as well as non-compliant DUAL with 
unknown table (#15260)
35bb12a230 is described below

commit 35bb12a230bb855d8b0651848ba36912f7fb9612
Author: Rajat Venkatesh <1638298+vra...@users.noreply.github.com>
AuthorDate: Thu Mar 13 19:01:08 2025 +0530

    Add tests for DUAL as well as non-compliant DUAL with unknown table (#15260)
    
    Dual behaviour in SSE is non-compliant. However the non-compliant query
    `select 1 from unknownTable` is used in production. This PR adds tests
    to detect changes that may change this non-compliant SQL
---
 .../tests/MultiStageEngineIntegrationTest.java     | 22 +++++++++++++++
 .../tests/OfflineClusterIntegrationTest.java       | 31 ++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
index 7600ef4103..c295efe49a 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
@@ -327,6 +327,28 @@ public class MultiStageEngineIntegrationTest extends 
BaseClusterIntegrationTestS
     
Assert.assertTrue(jsonNode.get("resultTable").get("rows").get(0).get(0).asDouble()
 < 17000);
   }
 
+  @Test
+  void testDual()
+      throws Exception {
+    setUseMultiStageQueryEngine(true);
+    JsonNode queryResponse = postQuery("SELECT 1");
+    Assert.assertTrue(queryResponse.get("exceptions").isEmpty());
+    Assert.assertEquals(queryResponse.get("numRowsResultSet").asInt(), 1);
+  }
+
+  /**
+   * This test is added because SSE engine supports it and is used in 
production.
+   * Make sure that the difference in support is well-documented.
+   */
+  @Test
+  void testDualWithNotExistsTableMSE()
+      throws Exception {
+    setUseMultiStageQueryEngine(true);
+    JsonNode queryResponse = postQuery("SELECT 1 from notExistsTable");
+    
Assert.assertEquals(queryResponse.get("exceptions").get(0).get("errorCode").asInt(),
+        QueryErrorCode.QUERY_PLANNING.getId()); // TODO: The right error is 
TABLE_DOES_NOT_EXIST
+  }
+
   @Test
   public void testTimeFunc()
       throws Exception {
diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
index b11c5c854d..d5e09a6a9c 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/OfflineClusterIntegrationTest.java
@@ -3164,6 +3164,24 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     assertFalse(_propertyStore.exists(configPath, 0));
   }
 
+  @Test
+  void testDual()
+      throws Exception {
+    setUseMultiStageQueryEngine(false);
+    JsonNode queryResponse = postQuery("SELECT 1");
+    Assert.assertTrue(queryResponse.get("exceptions").isEmpty());
+    Assert.assertEquals(queryResponse.get("numRowsResultSet").asInt(), 1);
+  }
+
+  @Test
+  void testDualWithNotExistsTableSSE()
+      throws Exception {
+    setUseMultiStageQueryEngine(false);
+    JsonNode queryResponse = postQuery("SELECT 1 from notExistsTable");
+    Assert.assertTrue(queryResponse.get("exceptions").isEmpty());
+    Assert.assertEquals(queryResponse.get("numRowsResultSet").asInt(), 1);
+  }
+
   @Test(dataProvider = "useBothQueryEngines")
   public void testDistinctQuery(boolean useMultiStageQueryEngine)
       throws Exception {
@@ -3835,6 +3853,19 @@ public class OfflineClusterIntegrationTest extends 
BaseClusterIntegrationTestSet
     Assert.assertTrue(connection.isClosed());
   }
 
+  @Test
+  public void testNonExistingTableQueryThroughJDBCClient()
+      throws Exception {
+    String query = "SELECT 1 from nonExistingTable";
+    java.sql.Connection connection = 
getJDBCConnectionFromController(getControllerPort());
+    Statement statement = connection.createStatement();
+    ResultSet resultSet = statement.executeQuery(query);
+    resultSet.first();
+    Assert.assertTrue(resultSet.getLong(1) > 0);
+    connection.close();
+    Assert.assertTrue(connection.isClosed());
+  }
+
   private java.sql.Connection getJDBCConnectionFromController(int 
controllerPort)
       throws Exception {
     PinotDriver pinotDriver = new PinotDriver();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to