Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions docs/interpreter/jdbc.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down
22 changes: 2 additions & 20 deletions jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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) {
Expand All @@ -695,19 +688,8 @@ private InterpreterResult executeSql(String propertyKey, String sql,
}

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)
Expand Down
7 changes: 0 additions & 7 deletions jdbc/src/main/resources/interpreter-setting.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -391,11 +391,14 @@ public void testDefaultSplitQuries() throws IOException, InterpreterException {
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
Expand Down Expand Up @@ -612,12 +615,15 @@ public void testPrecode() throws IOException, InterpreterException {

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
Expand Down Expand Up @@ -670,12 +676,15 @@ public void testPrecodeWithAnotherPrefix() throws IOException,
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
Expand Down