diff --git a/docs/interpreter/jdbc.md b/docs/interpreter/jdbc.md
index b0f5d6ba0db..5c6c57bda84 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.
120 |
Time to live sql completer in seconds (-1 to update everytime, 0 to disable update) |
-
- | default.splitQueries |
- false |
- Each query is executed apart and returns the result |
-
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.
+
+### 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 dda54137f36..24caf7d6704 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 @@ private InterpreterResult executeSql(String propertyKey, String sql,
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 @@ private InterpreterResult executeSql(String propertyKey, String sql,
}
try {
- List 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 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 e018e86dc4f..c84056f7b4c 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 79c15d8d5bc..125ef9ce4ad 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 void testDefaultSplitQuries() throws IOException, InterpreterException {
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
List 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 void testPrecode() throws IOException, InterpreterException {
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
List 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 void testPrecodeWithAnotherPrefix() throws IOException,
List 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