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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1f6de95  [ZEPPELIN-4797]. Enable multiple sql in jdbc interpreter by 
default
1f6de95 is described below

commit 1f6de95b7f42bfc071a18119819b63d6c9ddcc8a
Author: Jeff Zhang <zjf...@apache.org>
AuthorDate: Wed May 6 15:59:17 2020 +0800

    [ZEPPELIN-4797]. Enable multiple sql in jdbc interpreter by default
    
    ### What is this PR for?
    
    Before this PR, user have to set property `default.splitQueries` to enable 
multiple queries in one paragraph, this PR remove this property, this PR remove 
this property, and make multiple sql query in support by default.
    
    ### What type of PR is it?
    [Feature | Documentation]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4797
    
    ### How should this be tested?
    * Unit test is updated
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Jeff Zhang <zjf...@apache.org>
    
    Closes #3764 from zjffdu/ZEPPELIN-4797 and squashes the following commits:
    
    232347058 [Jeff Zhang] address comment
    fcb9e612b [Jeff Zhang] [ZEPPELIN-4797]. Enable multiple sql in jdbc 
interpreter by default
---
 docs/interpreter/jdbc.md                           | 18 ++++++++++++-----
 .../org/apache/zeppelin/jdbc/JDBCInterpreter.java  | 22 ++-------------------
 jdbc/src/main/resources/interpreter-setting.json   |  7 -------
 .../apache/zeppelin/jdbc/JDBCInterpreterTest.java  | 23 +++++++++++++++-------
 4 files changed, 31 insertions(+), 39 deletions(-)

diff --git a/docs/interpreter/jdbc.md b/docs/interpreter/jdbc.md
index b0f5d6b..5c6c57b 100644
--- a/docs/interpreter/jdbc.md
+++ b/docs/interpreter/jdbc.md
@@ -139,11 +139,6 @@ The JDBC interpreter properties are defined by default 
like below.
     <td>120</td>
     <td>Time to live sql completer in seconds (-1 to update everytime, 0 to 
disable update)</td>
   </tr>
-  <tr>
-    <td>default.splitQueries</td>
-    <td>false</td>
-    <td>Each query is executed apart and returns the result</td>
-  </tr>
 </table>
 
 If you want to connect other databases such as `Mysql`, `Redshift` and `Hive`, 
you need to edit the property values.
@@ -245,6 +240,19 @@ So you don't need to type this prefix in every paragraphs' 
header.
 
 <img 
src="{{BASE_PATH}}/assets/themes/zeppelin/img/docs-img/run_paragraph_with_jdbc.png"
 width="600px" />
 
+
+### Multiple SQL statements
+
+You can write multiple sql statements in one paragraph, just separate them 
with semi-colon. e.g
+
+```sql
+
+USE zeppelin_demo;
+
+CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
+       species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
+```
+
 ### Apply Zeppelin Dynamic Forms
 
 You can leverage [Zeppelin Dynamic Form](../usage/dynamic_form/intro.html) 
inside your queries. You can use both the `text input` and `select form` 
parametrization features.
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java 
b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
index dda5413..24caf7d 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
@@ -112,7 +112,6 @@ public class JDBCInterpreter extends KerberosInterpreter {
   static final String COMPLETER_SCHEMA_FILTERS_KEY = "completer.schemaFilters";
   static final String COMPLETER_TTL_KEY = "completer.ttlInSeconds";
   static final String DEFAULT_COMPLETER_TTL = "120";
-  static final String SPLIT_QURIES_KEY = "splitQueries";
   static final String JDBC_JCEKS_FILE = "jceks.file";
   static final String JDBC_JCEKS_CREDENTIAL_KEY = "jceks.credentialKey";
   static final String PRECODE_KEY_TEMPLATE = "%s.precode";
@@ -668,12 +667,6 @@ public class JDBCInterpreter extends KerberosInterpreter {
     String paragraphId = context.getParagraphId();
     String user = context.getAuthenticationInfo().getUser();
 
-    boolean splitQuery = false;
-    String splitQueryProperty = getProperty(String.format("%s.%s", 
propertyKey, SPLIT_QURIES_KEY));
-    if (StringUtils.isNotBlank(splitQueryProperty) && 
splitQueryProperty.equalsIgnoreCase("true")) {
-      splitQuery = true;
-    }
-
     try {
       connection = getConnection(propertyKey, context);
     } catch (Exception e) {
@@ -695,19 +688,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
     }
 
     try {
-      List<String> sqlArray;
-      sql = sql.trim();
-      if (splitQuery) {
-        sqlArray = sqlSplitter.splitSql(sql);
-      } else {
-        if (sql.endsWith(";")) {
-          sql = sql.substring(0, sql.length() - 1);
-        }
-        sqlArray = Arrays.asList(sql);
-      }
-
-      for (int i = 0; i < sqlArray.size(); i++) {
-        String sqlToExecute = sqlArray.get(i);
+      List<String> sqlArray = sqlSplitter.splitSql(sql);
+      for (String sqlToExecute : sqlArray) {
         statement = connection.createStatement();
 
         // fetch n+1 rows in order to indicate there's more rows available 
(for large selects)
diff --git a/jdbc/src/main/resources/interpreter-setting.json 
b/jdbc/src/main/resources/interpreter-setting.json
index e018e86..c84056f 100644
--- a/jdbc/src/main/resources/interpreter-setting.json
+++ b/jdbc/src/main/resources/interpreter-setting.json
@@ -60,13 +60,6 @@
         "description": "Runs before each run of the paragraph, in the same 
connection",
         "type": "textarea"
       },
-      "default.splitQueries": {
-        "envName": null,
-        "propertyName": "default.splitQueries",
-        "defaultValue": false,
-        "description": "Each query is executed apart and returns the result",
-        "type": "checkbox"
-      },
       "common.max_count": {
         "envName": null,
         "propertyName": "common.max_count",
diff --git 
a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java 
b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
index 79c15d8..125ef9c 100644
--- a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
+++ b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
@@ -391,11 +391,14 @@ public class JDBCInterpreterTest extends 
BasicJDBCTestCaseAdapter {
     assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
 
     List<InterpreterResultMessage> resultMessages = 
context.out.toInterpreterResultMessage();
-    assertEquals(1, resultMessages.size());
+    assertEquals(2, resultMessages.size());
 
     assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(0).getType());
     assertEquals("ID\tNAME\na\ta_name\nb\tb_name\nc\tnull\n",
             resultMessages.get(0).getData());
+    assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(1).getType());
+    assertEquals("ID\tNAME\n",
+            resultMessages.get(1).getData());
   }
 
   @Test
@@ -612,12 +615,15 @@ public class JDBCInterpreterTest extends 
BasicJDBCTestCaseAdapter {
 
     assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
     List<InterpreterResultMessage> resultMessages = 
context.out.toInterpreterResultMessage();
-    assertEquals(2, resultMessages.size());
+    assertEquals(3, resultMessages.size());
     assertEquals(InterpreterResult.Type.TEXT, resultMessages.get(0).getType());
     assertEquals("Query executed successfully. Affected rows : 0\n",
             resultMessages.get(0).getData());
-    assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(1).getType());
-    assertEquals("ID\n1\n", resultMessages.get(1).getData());
+    assertEquals(InterpreterResult.Type.TEXT, resultMessages.get(1).getType());
+    assertEquals("Query executed successfully. Affected rows : 1\n",
+            resultMessages.get(1).getData());
+    assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(2).getType());
+    assertEquals("ID\n1\n", resultMessages.get(2).getData());
   }
 
   @Test
@@ -670,12 +676,15 @@ public class JDBCInterpreterTest extends 
BasicJDBCTestCaseAdapter {
     List<InterpreterResultMessage> resultMessages = 
context.out.toInterpreterResultMessage();
     assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
 
-    assertEquals(2, resultMessages.size());
+    assertEquals(3, resultMessages.size());
     assertEquals(InterpreterResult.Type.TEXT, resultMessages.get(0).getType());
     assertEquals("Query executed successfully. Affected rows : 0\n",
             resultMessages.get(0).getData());
-    assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(1).getType());
-    assertEquals("ID\n2\n", resultMessages.get(1).getData());
+    assertEquals(InterpreterResult.Type.TEXT, resultMessages.get(1).getType());
+    assertEquals("Query executed successfully. Affected rows : 1\n",
+            resultMessages.get(1).getData());
+    assertEquals(InterpreterResult.Type.TABLE, 
resultMessages.get(2).getType());
+    assertEquals("ID\n2\n", resultMessages.get(2).getData());
   }
 
   @Test

Reply via email to