You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2018/08/29 10:07:41 UTC
[45/50] [abbrv] zeppelin git commit: Revert "[ZEPPELIN-3740] Adopt
`google-java-format` and `fmt-maven-plugin`"
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
----------------------------------------------------------------------
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 228215f..93d2344 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
@@ -5,12 +5,12 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.apache.zeppelin.jdbc;
@@ -19,6 +19,22 @@ import static org.apache.commons.lang.StringUtils.isEmpty;
import static org.apache.commons.lang.StringUtils.isNotEmpty;
import static org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod.KERBEROS;
+import org.apache.commons.dbcp2.ConnectionFactory;
+import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
+import org.apache.commons.dbcp2.PoolableConnectionFactory;
+import org.apache.commons.dbcp2.PoolingDriver;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang.mutable.MutableBoolean;
+import org.apache.commons.pool2.ObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.alias.CredentialProvider;
+import org.apache.hadoop.security.alias.CredentialProviderFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
@@ -38,19 +54,7 @@ import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.dbcp2.ConnectionFactory;
-import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
-import org.apache.commons.dbcp2.PoolableConnectionFactory;
-import org.apache.commons.dbcp2.PoolingDriver;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.exception.ExceptionUtils;
-import org.apache.commons.lang.mutable.MutableBoolean;
-import org.apache.commons.pool2.ObjectPool;
-import org.apache.commons.pool2.impl.GenericObjectPool;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.alias.CredentialProvider;
-import org.apache.hadoop.security.alias.CredentialProviderFactory;
+
import org.apache.zeppelin.interpreter.InterpreterContext;
import org.apache.zeppelin.interpreter.InterpreterException;
import org.apache.zeppelin.interpreter.InterpreterResult;
@@ -63,24 +67,28 @@ import org.apache.zeppelin.scheduler.Scheduler;
import org.apache.zeppelin.scheduler.SchedulerFactory;
import org.apache.zeppelin.user.UserCredentials;
import org.apache.zeppelin.user.UsernamePassword;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
- * JDBC interpreter for Zeppelin. This interpreter can also be used for accessing HAWQ, GreenplumDB,
- * MariaDB, MySQL, Postgres and Redshift.
+ * JDBC interpreter for Zeppelin. This interpreter can also be used for accessing HAWQ,
+ * GreenplumDB, MariaDB, MySQL, Postgres and Redshift.
*
* <ul>
- * <li>{@code default.url} - JDBC URL to connect to.
- * <li>{@code default.user} - JDBC user name..
- * <li>{@code default.password} - JDBC password..
- * <li>{@code default.driver.name} - JDBC driver name.
- * <li>{@code common.max.result} - Max number of SQL result to display.
+ * <li>{@code default.url} - JDBC URL to connect to.</li>
+ * <li>{@code default.user} - JDBC user name..</li>
+ * <li>{@code default.password} - JDBC password..</li>
+ * <li>{@code default.driver.name} - JDBC driver name.</li>
+ * <li>{@code common.max.result} - Max number of SQL result to display.</li>
* </ul>
*
- * <p>How to use: <br>
- * {@code %jdbc.sql} <br>
- * {@code SELECT store_id, count(*) FROM retail_demo.order_lineitems_pxf GROUP BY store_id; }
+ * <p>
+ * How to use: <br/>
+ * {@code %jdbc.sql} <br/>
+ * {@code
+ * SELECT store_id, count(*)
+ * FROM retail_demo.order_lineitems_pxf
+ * GROUP BY store_id;
+ * }
+ * </p>
*/
public class JDBCInterpreter extends KerberosInterpreter {
private Logger logger = LoggerFactory.getLogger(JDBCInterpreter.class);
@@ -126,7 +134,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
private static final String CONCURRENT_EXECUTION_KEY = "zeppelin.jdbc.concurrent.use";
private static final String CONCURRENT_EXECUTION_COUNT =
- "zeppelin.jdbc.concurrent.max_connection";
+ "zeppelin.jdbc.concurrent.max_connection";
private static final String DBCP_STRING = "jdbc:apache:commons:dbcp:";
private final HashMap<String, Properties> basePropretiesMap;
@@ -188,13 +196,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
if (!COMMON_KEY.equals(key)) {
Properties properties = basePropretiesMap.get(key);
if (!properties.containsKey(DRIVER_KEY) || !properties.containsKey(URL_KEY)) {
- logger.error(
- "{} will be ignored. {}.{} and {}.{} is mandatory.",
- key,
- DRIVER_KEY,
- key,
- key,
- URL_KEY);
+ logger.error("{} will be ignored. {}.{} and {}.{} is mandatory.",
+ key, DRIVER_KEY, key, key, URL_KEY);
removeKeySet.add(key);
}
}
@@ -219,24 +222,20 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
private void setMaxLineResults() {
- if (basePropretiesMap.containsKey(COMMON_KEY)
- && basePropretiesMap.get(COMMON_KEY).containsKey(MAX_LINE_KEY)) {
+ if (basePropretiesMap.containsKey(COMMON_KEY) &&
+ basePropretiesMap.get(COMMON_KEY).containsKey(MAX_LINE_KEY)) {
maxLineResults = Integer.valueOf(basePropretiesMap.get(COMMON_KEY).getProperty(MAX_LINE_KEY));
}
}
- private SqlCompleter createOrUpdateSqlCompleter(
- SqlCompleter sqlCompleter,
- final Connection connection,
- String propertyKey,
- final String buf,
- final int cursor) {
+ private SqlCompleter createOrUpdateSqlCompleter(SqlCompleter sqlCompleter,
+ final Connection connection, String propertyKey, final String buf, final int cursor) {
String schemaFiltersKey = String.format("%s.%s", propertyKey, COMPLETER_SCHEMA_FILTERS_KEY);
String sqlCompleterTtlKey = String.format("%s.%s", propertyKey, COMPLETER_TTL_KEY);
final String schemaFiltersString = getProperty(schemaFiltersKey);
- int ttlInSeconds =
- Integer.valueOf(
- StringUtils.defaultIfEmpty(getProperty(sqlCompleterTtlKey), DEFAULT_COMPLETER_TTL));
+ int ttlInSeconds = Integer.valueOf(
+ StringUtils.defaultIfEmpty(getProperty(sqlCompleterTtlKey), DEFAULT_COMPLETER_TTL)
+ );
final SqlCompleter completer;
if (sqlCompleter == null) {
completer = new SqlCompleter(ttlInSeconds);
@@ -244,13 +243,12 @@ public class JDBCInterpreter extends KerberosInterpreter {
completer = sqlCompleter;
}
ExecutorService executorService = Executors.newFixedThreadPool(1);
- executorService.execute(
- new Runnable() {
- @Override
- public void run() {
- completer.createOrUpdateFromConnection(connection, schemaFiltersString, buf, cursor);
- }
- });
+ executorService.execute(new Runnable() {
+ @Override
+ public void run() {
+ completer.createOrUpdateFromConnection(connection, schemaFiltersString, buf, cursor);
+ }
+ });
executorService.shutdown();
@@ -324,13 +322,13 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
private boolean existAccountInBaseProperty(String propertyKey) {
- return basePropretiesMap.get(propertyKey).containsKey(USER_KEY)
- && !isEmpty((String) basePropretiesMap.get(propertyKey).get(USER_KEY))
- && basePropretiesMap.get(propertyKey).containsKey(PASSWORD_KEY);
+ return basePropretiesMap.get(propertyKey).containsKey(USER_KEY) &&
+ !isEmpty((String) basePropretiesMap.get(propertyKey).get(USER_KEY)) &&
+ basePropretiesMap.get(propertyKey).containsKey(PASSWORD_KEY);
}
- private UsernamePassword getUsernamePassword(
- InterpreterContext interpreterContext, String replName) {
+ private UsernamePassword getUsernamePassword(InterpreterContext interpreterContext,
+ String replName) {
UserCredentials uc = interpreterContext.getAuthenticationInfo().getUserCredentials();
if (uc != null) {
return uc.getUsernamePassword(replName);
@@ -362,8 +360,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
String user = interpreterContext.getAuthenticationInfo().getUser();
JDBCUserConfigurations jdbcUserConfigurations = getJDBCConfiguration(user);
- if (basePropretiesMap.get(propertyKey).containsKey(USER_KEY)
- && !basePropretiesMap.get(propertyKey).getProperty(USER_KEY).isEmpty()) {
+ if (basePropretiesMap.get(propertyKey).containsKey(USER_KEY) &&
+ !basePropretiesMap.get(propertyKey).getProperty(USER_KEY).isEmpty()) {
String password = getPassword(basePropretiesMap.get(propertyKey));
if (!isEmpty(password)) {
basePropretiesMap.get(propertyKey).setProperty(PASSWORD_KEY, password);
@@ -375,8 +373,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
jdbcUserConfigurations.cleanUserProperty(propertyKey);
- UsernamePassword usernamePassword =
- getUsernamePassword(interpreterContext, getEntityName(interpreterContext.getReplName()));
+ UsernamePassword usernamePassword = getUsernamePassword(interpreterContext,
+ getEntityName(interpreterContext.getReplName()));
if (usernamePassword != null) {
jdbcUserConfigurations.setUserProperty(propertyKey, usernamePassword);
} else {
@@ -384,13 +382,13 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
}
- private void createConnectionPool(
- String url, String user, String propertyKey, Properties properties)
- throws SQLException, ClassNotFoundException {
- ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, properties);
+ private void createConnectionPool(String url, String user, String propertyKey,
+ Properties properties) throws SQLException, ClassNotFoundException {
+ ConnectionFactory connectionFactory =
+ new DriverManagerConnectionFactory(url, properties);
- PoolableConnectionFactory poolableConnectionFactory =
- new PoolableConnectionFactory(connectionFactory, null);
+ PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
+ connectionFactory, null);
final String maxConnectionLifetime =
StringUtils.defaultIfEmpty(getProperty("zeppelin.jdbc.maxConnLifetime"), "-1");
poolableConnectionFactory.setMaxConnLifetimeMillis(Long.parseLong(maxConnectionLifetime));
@@ -404,9 +402,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
getJDBCConfiguration(user).saveDBDriverPool(propertyKey, driver);
}
- private Connection getConnectionFromPool(
- String url, String user, String propertyKey, Properties properties)
- throws SQLException, ClassNotFoundException {
+ private Connection getConnectionFromPool(String url, String user, String propertyKey,
+ Properties properties) throws SQLException, ClassNotFoundException {
String jdbcDriver = getJDBCDriverName(user, propertyKey);
if (!getJDBCConfiguration(user).isConnectionInDBDriverPool(propertyKey)) {
@@ -417,7 +414,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
public Connection getConnection(String propertyKey, InterpreterContext interpreterContext)
throws ClassNotFoundException, SQLException, InterpreterException, IOException {
- final String user = interpreterContext.getAuthenticationInfo().getUser();
+ final String user = interpreterContext.getAuthenticationInfo().getUser();
Connection connection;
if (propertyKey == null || basePropretiesMap.get(propertyKey) == null) {
return null;
@@ -440,9 +437,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
JDBCSecurityImpl.createSecureConfiguration(getProperties(), authType);
switch (authType) {
case KERBEROS:
- if (user == null
- || "false"
- .equalsIgnoreCase(getProperty("zeppelin.jdbc.auth.kerberos.proxy.enable"))) {
+ if (user == null || "false".equalsIgnoreCase(
+ getProperty("zeppelin.jdbc.auth.kerberos.proxy.enable"))) {
connection = getConnectionFromPool(connectionUrl, user, propertyKey, properties);
} else {
if (basePropretiesMap.get(propertyKey).containsKey("proxy.user.property")) {
@@ -450,9 +446,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
} else {
UserGroupInformation ugi = null;
try {
- ugi =
- UserGroupInformation.createProxyUser(
- user, UserGroupInformation.getCurrentUser());
+ ugi = UserGroupInformation.createProxyUser(
+ user, UserGroupInformation.getCurrentUser());
} catch (Exception e) {
logger.error("Error in getCurrentUser", e);
throw new InterpreterException("Error in getCurrentUser", e);
@@ -460,14 +455,12 @@ public class JDBCInterpreter extends KerberosInterpreter {
final String poolKey = propertyKey;
try {
- connection =
- ugi.doAs(
- new PrivilegedExceptionAction<Connection>() {
- @Override
- public Connection run() throws Exception {
- return getConnectionFromPool(connectionUrl, user, poolKey, properties);
- }
- });
+ connection = ugi.doAs(new PrivilegedExceptionAction<Connection>() {
+ @Override
+ public Connection run() throws Exception {
+ return getConnectionFromPool(connectionUrl, user, poolKey, properties);
+ }
+ });
} catch (Exception e) {
logger.error("Error in doAs", e);
throw new InterpreterException("Error in doAs", e);
@@ -487,29 +480,21 @@ public class JDBCInterpreter extends KerberosInterpreter {
private String appendProxyUserToURL(String url, String user, String propertyKey) {
StringBuilder connectionUrl = new StringBuilder(url);
- if (user != null
- && !user.equals("anonymous")
- && basePropretiesMap.get(propertyKey).containsKey("proxy.user.property")) {
+ if (user != null && !user.equals("anonymous") &&
+ basePropretiesMap.get(propertyKey).containsKey("proxy.user.property")) {
Integer lastIndexOfUrl = connectionUrl.indexOf("?");
if (lastIndexOfUrl == -1) {
lastIndexOfUrl = connectionUrl.length();
}
logger.info("Using proxy user as :" + user);
- logger.info(
- "Using proxy property for user as :"
- + basePropretiesMap.get(propertyKey).getProperty("proxy.user.property"));
- connectionUrl.insert(
- lastIndexOfUrl,
- ";"
- + basePropretiesMap.get(propertyKey).getProperty("proxy.user.property")
- + "="
- + user
- + ";");
+ logger.info("Using proxy property for user as :" +
+ basePropretiesMap.get(propertyKey).getProperty("proxy.user.property"));
+ connectionUrl.insert(lastIndexOfUrl, ";" +
+ basePropretiesMap.get(propertyKey).getProperty("proxy.user.property") + "=" + user + ";");
} else if (user != null && !user.equals("anonymous") && url.contains("hive")) {
- logger.warn(
- "User impersonation for hive has changed please refer: http://zeppelin.apache"
- + ".org/docs/latest/interpreter/jdbc.html#apache-hive");
+ logger.warn("User impersonation for hive has changed please refer: http://zeppelin.apache" +
+ ".org/docs/latest/interpreter/jdbc.html#apache-hive");
}
return connectionUrl.toString();
@@ -522,8 +507,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
&& isNotEmpty(properties.getProperty(JDBC_JCEKS_CREDENTIAL_KEY))) {
try {
Configuration configuration = new Configuration();
- configuration.set(
- CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
+ configuration.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH,
properties.getProperty(JDBC_JCEKS_FILE));
CredentialProvider provider = CredentialProviderFactory.getProviders(configuration).get(0);
CredentialProvider.CredentialEntry credEntry =
@@ -531,18 +515,13 @@ public class JDBCInterpreter extends KerberosInterpreter {
if (credEntry != null) {
return new String(credEntry.getCredential());
} else {
- throw new InterpreterException(
- "Failed to retrieve password from JCEKS from key: "
- + properties.getProperty(JDBC_JCEKS_CREDENTIAL_KEY));
+ throw new InterpreterException("Failed to retrieve password from JCEKS from key: "
+ + properties.getProperty(JDBC_JCEKS_CREDENTIAL_KEY));
}
} catch (Exception e) {
- logger.error(
- "Failed to retrieve password from JCEKS \n"
- + "For file: "
- + properties.getProperty(JDBC_JCEKS_FILE)
- + "\nFor key: "
- + properties.getProperty(JDBC_JCEKS_CREDENTIAL_KEY),
- e);
+ logger.error("Failed to retrieve password from JCEKS \n" +
+ "For file: " + properties.getProperty(JDBC_JCEKS_FILE) +
+ "\nFor key: " + properties.getProperty(JDBC_JCEKS_CREDENTIAL_KEY), e);
throw e;
}
}
@@ -638,10 +617,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
}
- if (!quoteString
- && !doubleQuoteString
- && !multiLineComment
- && !singleLineComment
+ if (!quoteString && !doubleQuoteString && !multiLineComment && !singleLineComment
&& sql.length() > item + 1) {
if (character == '-' && sql.charAt(item + 1) == '-') {
singleLineComment = true;
@@ -650,10 +626,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
}
- if (character == ';'
- && !quoteString
- && !doubleQuoteString
- && !multiLineComment
+ if (character == ';' && !quoteString && !doubleQuoteString && !multiLineComment
&& !singleLineComment) {
queries.add(StringUtils.trim(query.toString()));
query = new StringBuilder();
@@ -683,8 +656,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
return interpreterResult;
}
- private InterpreterResult executeSql(
- String propertyKey, String sql, InterpreterContext interpreterContext) {
+ private InterpreterResult executeSql(String propertyKey, String sql,
+ InterpreterContext interpreterContext) {
Connection connection = null;
Statement statement;
ResultSet resultSet = null;
@@ -739,7 +712,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
String statementPrecode =
getProperty(String.format(STATEMENT_PRECODE_KEY_TEMPLATE, propertyKey));
-
+
if (StringUtils.isNotBlank(statementPrecode)) {
statement.execute(statementPrecode);
}
@@ -750,42 +723,37 @@ public class JDBCInterpreter extends KerberosInterpreter {
resultSet = statement.getResultSet();
// Regards that the command is DDL.
- if (isDDLCommand(
- statement.getUpdateCount(), resultSet.getMetaData().getColumnCount())) {
- interpreterResult.add(InterpreterResult.Type.TEXT, "Query executed successfully.");
+ if (isDDLCommand(statement.getUpdateCount(),
+ resultSet.getMetaData().getColumnCount())) {
+ interpreterResult.add(InterpreterResult.Type.TEXT,
+ "Query executed successfully.");
} else {
MutableBoolean isComplete = new MutableBoolean(true);
- String results =
- getResults(
- resultSet, !containsIgnoreCase(sqlToExecute, EXPLAIN_PREDICATE), isComplete);
+ String results = getResults(resultSet,
+ !containsIgnoreCase(sqlToExecute, EXPLAIN_PREDICATE), isComplete);
interpreterResult.add(results);
if (!isComplete.booleanValue()) {
- interpreterResult.add(
- ResultMessages.getExceedsLimitRowsMessage(
- getMaxResult(), String.format("%s.%s", COMMON_KEY, MAX_LINE_KEY)));
+ interpreterResult.add(ResultMessages.getExceedsLimitRowsMessage(getMaxResult(),
+ String.format("%s.%s", COMMON_KEY, MAX_LINE_KEY)));
}
}
} else {
// Response contains either an update count or there are no results.
int updateCount = statement.getUpdateCount();
- interpreterResult.add(
- InterpreterResult.Type.TEXT,
- "Query executed successfully. Affected rows : " + updateCount);
+ interpreterResult.add(InterpreterResult.Type.TEXT,
+ "Query executed successfully. Affected rows : " +
+ updateCount);
}
} finally {
if (resultSet != null) {
try {
resultSet.close();
- } catch (SQLException e) {
- /*ignored*/
- }
+ } catch (SQLException e) { /*ignored*/ }
}
if (statement != null) {
try {
statement.close();
- } catch (SQLException e) {
- /*ignored*/
- }
+ } catch (SQLException e) { /*ignored*/ }
}
}
}
@@ -795,23 +763,23 @@ public class JDBCInterpreter extends KerberosInterpreter {
interpreterResult.add(errorMsg);
return new InterpreterResult(Code.ERROR, interpreterResult.message());
} finally {
- // In case user ran an insert/update/upsert statement
+ //In case user ran an insert/update/upsert statement
if (connection != null) {
try {
if (!connection.getAutoCommit()) {
connection.commit();
}
connection.close();
- } catch (SQLException e) {
- /*ignored*/
- }
+ } catch (SQLException e) { /*ignored*/ }
}
getJDBCConfiguration(user).removeStatement(paragraphId);
}
return interpreterResult;
}
- /** For %table response replace Tab and Newline characters from the content. */
+ /**
+ * For %table response replace Tab and Newline characters from the content.
+ */
private String replaceReservedChars(String str) {
if (str == null) {
return EMPTY_COLUMN_VALUE;
@@ -821,10 +789,8 @@ public class JDBCInterpreter extends KerberosInterpreter {
@Override
public InterpreterResult interpret(String originalCmd, InterpreterContext contextInterpreter) {
- String cmd =
- Boolean.parseBoolean(getProperty("zeppelin.jdbc.interpolation"))
- ? interpolate(originalCmd, contextInterpreter.getResourcePool())
- : originalCmd;
+ String cmd = Boolean.parseBoolean(getProperty("zeppelin.jdbc.interpolation")) ?
+ interpolate(originalCmd, contextInterpreter.getResourcePool()) : originalCmd;
logger.debug("Run SQL command '{}'", cmd);
String propertyKey = getPropertyKey(contextInterpreter);
cmd = cmd.trim();
@@ -837,7 +803,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
logger.info("Cancel current query statement.");
String paragraphId = context.getParagraphId();
JDBCUserConfigurations jdbcUserConfigurations =
- getJDBCConfiguration(context.getAuthenticationInfo().getUser());
+ getJDBCConfiguration(context.getAuthenticationInfo().getUser());
try {
jdbcUserConfigurations.cancelStatement(paragraphId);
} catch (SQLException e) {
@@ -873,15 +839,15 @@ public class JDBCInterpreter extends KerberosInterpreter {
@Override
public Scheduler getScheduler() {
String schedulerName = JDBCInterpreter.class.getName() + this.hashCode();
- return isConcurrentExecution()
- ? SchedulerFactory.singleton()
- .createOrGetParallelScheduler(schedulerName, getMaxConcurrentConnection())
- : SchedulerFactory.singleton().createOrGetFIFOScheduler(schedulerName);
+ return isConcurrentExecution() ?
+ SchedulerFactory.singleton().createOrGetParallelScheduler(schedulerName,
+ getMaxConcurrentConnection())
+ : SchedulerFactory.singleton().createOrGetFIFOScheduler(schedulerName);
}
@Override
- public List<InterpreterCompletion> completion(
- String buf, int cursor, InterpreterContext interpreterContext) throws InterpreterException {
+ public List<InterpreterCompletion> completion(String buf, int cursor,
+ InterpreterContext interpreterContext) throws InterpreterException {
List<InterpreterCompletion> candidates = new ArrayList<>();
String propertyKey = getPropertyKey(interpreterContext);
String sqlCompleterKey =
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCUserConfigurations.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCUserConfigurations.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCUserConfigurations.java
index e584c06..4eac9fc 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCUserConfigurations.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCUserConfigurations.java
@@ -5,24 +5,28 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.apache.zeppelin.jdbc;
+import org.apache.commons.dbcp2.PoolingDriver;
+
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
-import org.apache.commons.dbcp2.PoolingDriver;
+
import org.apache.zeppelin.user.UsernamePassword;
-/** UserConfigurations for JDBC impersonation. */
+/**
+ * UserConfigurations for JDBC impersonation.
+ */
public class JDBCUserConfigurations {
private final Map<String, Statement> paragraphIdStatementMap;
private final Map<String, PoolingDriver> poolingDriverMap;
@@ -83,7 +87,6 @@ public class JDBCUserConfigurations {
poolingDriverMap.put(key, driver);
isSuccessful.put(key, false);
}
-
public PoolingDriver removeDBDriverPool(String key) throws SQLException {
isSuccessful.remove(key);
return poolingDriverMap.remove(key);
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/main/java/org/apache/zeppelin/jdbc/SqlCompleter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/SqlCompleter.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/SqlCompleter.java
index 0f7f01e..9f52ecb 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/SqlCompleter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/SqlCompleter.java
@@ -4,6 +4,11 @@ package org.apache.zeppelin.jdbc;
* This source file is based on code taken from SQLLine 1.0.2 See SQLLine notice in LICENSE
*/
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -21,47 +26,54 @@ import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import java.util.regex.Pattern;
+
import jline.console.completer.ArgumentCompleter.ArgumentList;
import jline.console.completer.ArgumentCompleter.WhitespaceArgumentDelimiter;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.math.NumberUtils;
+
import org.apache.zeppelin.completer.CachedCompleter;
import org.apache.zeppelin.completer.CompletionType;
import org.apache.zeppelin.completer.StringsCompleter;
import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-/** SQL auto complete functionality for the JdbcInterpreter. */
+/**
+ * SQL auto complete functionality for the JdbcInterpreter.
+ */
public class SqlCompleter {
private static Logger logger = LoggerFactory.getLogger(SqlCompleter.class);
- /** Delimiter that can split SQL statement in keyword list. */
- private WhitespaceArgumentDelimiter sqlDelimiter =
- new WhitespaceArgumentDelimiter() {
+ /**
+ * Delimiter that can split SQL statement in keyword list.
+ */
+ private WhitespaceArgumentDelimiter sqlDelimiter = new WhitespaceArgumentDelimiter() {
- private Pattern pattern = Pattern.compile(",");
+ private Pattern pattern = Pattern.compile(",");
- @Override
- public boolean isDelimiterChar(CharSequence buffer, int pos) {
- return pattern.matcher("" + buffer.charAt(pos)).matches()
+ @Override
+ public boolean isDelimiterChar(CharSequence buffer, int pos) {
+ return pattern.matcher("" + buffer.charAt(pos)).matches()
|| super.isDelimiterChar(buffer, pos);
- }
- };
+ }
+ };
- /** Schema completer. */
+ /**
+ * Schema completer.
+ */
private CachedCompleter schemasCompleter;
- /** Contain different completer with table list for every schema name. */
+ /**
+ * Contain different completer with table list for every schema name.
+ */
private Map<String, CachedCompleter> tablesCompleters = new HashMap<>();
/**
- * Contains different completer with column list for every table name Table names store as
- * schema_name.table_name.
+ * Contains different completer with column list for every table name
+ * Table names store as schema_name.table_name.
*/
private Map<String, CachedCompleter> columnsCompleters = new HashMap<>();
- /** Completer for sql keywords. */
+ /**
+ * Completer for sql keywords.
+ */
private CachedCompleter keywordCompleter;
private int ttlInSeconds;
@@ -87,11 +99,7 @@ public class SqlCompleter {
argumentPosition = argumentList.getArgumentPosition();
}
- int complete =
- completeName(
- cursorArgument,
- argumentPosition,
- candidates,
+ int complete = completeName(cursorArgument, argumentPosition, candidates,
findAliasesInSQL(argumentList.getArguments()));
logger.debug("complete:" + complete + ", size:" + candidates.size());
@@ -102,9 +110,10 @@ public class SqlCompleter {
* Return list of schema names within the database.
*
* @param meta metadata from connection to database
- * @param schemaFilters a schema name patterns; must match the schema name as it is stored in the
- * database; "" retrieves those without a schema; <code>null</code> means that the schema name
- * should not be used to narrow the search; supports '%'; for example "prod_v_%"
+ * @param schemaFilters a schema name patterns; must match the schema name
+ * as it is stored in the database; "" retrieves those without a schema;
+ * <code>null</code> means that the schema name should not be used to narrow
+ * the search; supports '%'; for example "prod_v_%"
* @return set of all schema names in the database
*/
private static Set<String> getSchemaNames(DatabaseMetaData meta, List<String> schemaFilters) {
@@ -137,9 +146,10 @@ public class SqlCompleter {
* Return list of catalog names within the database.
*
* @param meta metadata from connection to database
- * @param schemaFilters a catalog name patterns; must match the catalog name as it is stored in
- * the database; "" retrieves those without a catalog; <code>null</code> means that the schema
- * name should not be used to narrow the search; supports '%'; for example "prod_v_%"
+ * @param schemaFilters a catalog name patterns; must match the catalog name
+ * as it is stored in the database; "" retrieves those without a catalog;
+ * <code>null</code> means that the schema name should not be used to narrow
+ * the search; supports '%'; for example "prod_v_%"
* @return set of all catalog names in the database
*/
private static Set<String> getCatalogNames(DatabaseMetaData meta, List<String> schemaFilters) {
@@ -165,14 +175,8 @@ public class SqlCompleter {
}
private static void fillTableNames(String schema, DatabaseMetaData meta, Set<String> tables) {
- try (ResultSet tbls =
- meta.getTables(
- schema,
- schema,
- "%",
- new String[] {
- "TABLE", "VIEW", "ALIAS", "SYNONYM", "GLOBAL TEMPORARY", "LOCAL TEMPORARY"
- })) {
+ try (ResultSet tbls = meta.getTables(schema, schema, "%",
+ new String[]{"TABLE", "VIEW", "ALIAS", "SYNONYM", "GLOBAL TEMPORARY", "LOCAL TEMPORARY"})) {
while (tbls.next()) {
String table = tbls.getString("TABLE_NAME");
tables.add(table);
@@ -188,11 +192,11 @@ public class SqlCompleter {
* @param schema name of a scheme
* @param table name of a table
* @param meta meta metadata from connection to database
- * @param columns function fills this set, for every table name adds set of columns within the
- * table; table name is in format schema_name.table_name
+ * @param columns function fills this set, for every table name adds set
+ * of columns within the table; table name is in format schema_name.table_name
*/
- private static void fillColumnNames(
- String schema, String table, DatabaseMetaData meta, Set<String> columns) {
+ private static void fillColumnNames(String schema, String table, DatabaseMetaData meta,
+ Set<String> columns) {
try (ResultSet cols = meta.getColumns(schema, schema, table, "%")) {
while (cols.next()) {
String column = cols.getString("COLUMN_NAME");
@@ -203,34 +207,31 @@ public class SqlCompleter {
}
}
- public static Set<String> getSqlKeywordsCompletions(DatabaseMetaData meta)
- throws IOException, SQLException {
+ public static Set<String> getSqlKeywordsCompletions(DatabaseMetaData meta) throws IOException,
+ SQLException {
// Add the default SQL completions
String keywords =
- new BufferedReader(
- new InputStreamReader(SqlCompleter.class.getResourceAsStream("/ansi.sql.keywords")))
- .readLine();
+ new BufferedReader(new InputStreamReader(
+ SqlCompleter.class.getResourceAsStream("/ansi.sql.keywords"))).readLine();
Set<String> completions = new TreeSet<>();
if (null != meta) {
// Add the driver specific SQL completions
String driverSpecificKeywords =
- "/" + meta.getDriverName().replace(" ", "-").toLowerCase() + "-sql.keywords";
+ "/" + meta.getDriverName().replace(" ", "-").toLowerCase() + "-sql.keywords";
logger.info("JDBC DriverName:" + driverSpecificKeywords);
try {
if (SqlCompleter.class.getResource(driverSpecificKeywords) != null) {
String driverKeywords =
- new BufferedReader(
- new InputStreamReader(
+ new BufferedReader(new InputStreamReader(
SqlCompleter.class.getResourceAsStream(driverSpecificKeywords)))
- .readLine();
+ .readLine();
keywords += "," + driverKeywords.toUpperCase();
}
} catch (Exception e) {
- logger.debug(
- "fail to get driver specific SQL completions for " + driverSpecificKeywords + " : " + e,
- e);
+ logger.debug("fail to get driver specific SQL completions for " +
+ driverSpecificKeywords + " : " + e, e);
}
// Add the keywords from the current JDBC connection
@@ -276,11 +277,11 @@ public class SqlCompleter {
* Initializes all local completers from database connection.
*
* @param connection database connection
- * @param schemaFiltersString a comma separated schema name patterns, supports '%' symbol; for
- * example "prod_v_%,prod_t_%"
+ * @param schemaFiltersString a comma separated schema name patterns, supports '%' symbol;
+ * for example "prod_v_%,prod_t_%"
*/
- public void createOrUpdateFromConnection(
- Connection connection, String schemaFiltersString, String buffer, int cursor) {
+ public void createOrUpdateFromConnection(Connection connection, String schemaFiltersString,
+ String buffer, int cursor) {
try (Connection c = connection) {
if (schemaFiltersString == null) {
schemaFiltersString = StringUtils.EMPTY;
@@ -296,16 +297,14 @@ public class SqlCompleter {
if (c != null) {
DatabaseMetaData databaseMetaData = c.getMetaData();
- if (keywordCompleter == null
- || keywordCompleter.getCompleter() == null
+ if (keywordCompleter == null || keywordCompleter.getCompleter() == null
|| keywordCompleter.isExpired()) {
keywords = getSqlKeywordsCompletions(databaseMetaData);
initKeywords(keywords);
}
- if (cursorArgument.needLoadSchemas()
- && (schemasCompleter == null
- || schemasCompleter.getCompleter() == null
- || schemasCompleter.isExpired())) {
+ if (cursorArgument.needLoadSchemas() &&
+ (schemasCompleter == null || schemasCompleter.getCompleter() == null
+ || schemasCompleter.isExpired())) {
schemas = getSchemaNames(databaseMetaData, schemaFilters);
catalogs = getCatalogNames(databaseMetaData, schemaFilters);
@@ -317,8 +316,8 @@ public class SqlCompleter {
}
CachedCompleter tablesCompleter = tablesCompleters.get(cursorArgument.getSchema());
- if (cursorArgument.needLoadTables()
- && (tablesCompleter == null || tablesCompleter.isExpired())) {
+ if (cursorArgument.needLoadTables() &&
+ (tablesCompleter == null || tablesCompleter.isExpired())) {
fillTableNames(cursorArgument.getSchema(), databaseMetaData, tables);
initTables(cursorArgument.getSchema(), tables);
}
@@ -327,21 +326,15 @@ public class SqlCompleter {
String.format("%s.%s", cursorArgument.getSchema(), cursorArgument.getTable());
CachedCompleter columnsCompleter = columnsCompleters.get(schemaTable);
- if (cursorArgument.needLoadColumns()
- && (columnsCompleter == null || columnsCompleter.isExpired())) {
- fillColumnNames(
- cursorArgument.getSchema(), cursorArgument.getTable(), databaseMetaData, columns);
+ if (cursorArgument.needLoadColumns() &&
+ (columnsCompleter == null || columnsCompleter.isExpired())) {
+ fillColumnNames(cursorArgument.getSchema(), cursorArgument.getTable(), databaseMetaData,
+ columns);
initColumns(schemaTable, columns);
}
- logger.info(
- "Completer initialized with "
- + schemas.size()
- + " schemas, "
- + columns.size()
- + " tables and "
- + keywords.size()
- + " keywords");
+ logger.info("Completer initialized with " + schemas.size() + " schemas, " +
+ columns.size() + " tables and " + keywords.size() + " keywords");
}
} catch (SQLException | IOException e) {
@@ -357,22 +350,22 @@ public class SqlCompleter {
public void initSchemas(Set<String> schemas) {
if (schemas != null && !schemas.isEmpty()) {
- schemasCompleter =
- new CachedCompleter(new StringsCompleter(new TreeSet<>(schemas)), ttlInSeconds);
+ schemasCompleter = new CachedCompleter(
+ new StringsCompleter(new TreeSet<>(schemas)), ttlInSeconds);
}
}
public void initTables(String schema, Set<String> tables) {
if (tables != null && !tables.isEmpty()) {
- tablesCompleters.put(
- schema, new CachedCompleter(new StringsCompleter(new TreeSet<>(tables)), ttlInSeconds));
+ tablesCompleters.put(schema, new CachedCompleter(
+ new StringsCompleter(new TreeSet<>(tables)), ttlInSeconds));
}
}
public void initColumns(String schemaTable, Set<String> columns) {
if (columns != null && !columns.isEmpty()) {
- columnsCompleters.put(
- schemaTable, new CachedCompleter(new StringsCompleter(columns), ttlInSeconds));
+ columnsCompleters.put(schemaTable,
+ new CachedCompleter(new StringsCompleter(columns), ttlInSeconds));
}
}
@@ -385,8 +378,8 @@ public class SqlCompleter {
public Map<String, String> findAliasesInSQL(String[] sqlArguments) {
Map<String, String> res = new HashMap<>();
for (int i = 0; i < sqlArguments.length - 1; i++) {
- if (columnsCompleters.keySet().contains(sqlArguments[i])
- && sqlArguments[i + 1].matches("[a-zA-Z]+")) {
+ if (columnsCompleters.keySet().contains(sqlArguments[i]) &&
+ sqlArguments[i + 1].matches("[a-zA-Z]+")) {
res.put(sqlArguments[i + 1], sqlArguments[i]);
}
}
@@ -416,8 +409,8 @@ public class SqlCompleter {
*
* @return -1 in case of no candidates found, 0 otherwise
*/
- private int completeTable(
- String schema, String buffer, int cursor, List<CharSequence> candidates) {
+ private int completeTable(String schema, String buffer, int cursor,
+ List<CharSequence> candidates) {
// Wrong schema
if (schema == null || !tablesCompleters.containsKey(schema)) {
return -1;
@@ -431,31 +424,26 @@ public class SqlCompleter {
*
* @return -1 in case of no candidates found, 0 otherwise
*/
- private int completeColumn(
- String schema, String table, String buffer, int cursor, List<CharSequence> candidates) {
+ private int completeColumn(String schema, String table, String buffer, int cursor,
+ List<CharSequence> candidates) {
// Wrong schema or wrong table
if (schema == null || table == null || !columnsCompleters.containsKey(schema + "." + table)) {
return -1;
} else {
- return columnsCompleters
- .get(schema + "." + table)
- .getCompleter()
+ return columnsCompleters.get(schema + "." + table).getCompleter()
.complete(buffer, cursor, candidates);
}
}
/**
- * Complete buffer with a single name. Function will decide what it is: a schema, a table of a
- * column or a keyword
+ * Complete buffer with a single name. Function will decide what it is:
+ * a schema, a table of a column or a keyword
*
* @param aliases for every alias contains table name in format schema_name.table_name
* @return -1 in case of no candidates found, 0 otherwise
*/
- public int completeName(
- String buffer,
- int cursor,
- List<InterpreterCompletion> candidates,
- Map<String, String> aliases) {
+ public int completeName(String buffer, int cursor, List<InterpreterCompletion> candidates,
+ Map<String, String> aliases) {
CursorArgument cursorArgument = parseCursorArgument(buffer, cursor);
// find schema and table name if they are
@@ -463,42 +451,40 @@ public class SqlCompleter {
String table;
String column;
- if (cursorArgument.getSchema() == null) { // process all
+ if (cursorArgument.getSchema() == null) { // process all
List<CharSequence> keywordsCandidates = new ArrayList();
List<CharSequence> schemaCandidates = new ArrayList<>();
int keywordsRes = completeKeyword(buffer, cursor, keywordsCandidates);
int schemaRes = completeSchema(buffer, cursor, schemaCandidates);
addCompletions(candidates, keywordsCandidates, CompletionType.keyword.name());
addCompletions(candidates, schemaCandidates, CompletionType.schema.name());
- return NumberUtils.max(new int[] {keywordsRes, schemaRes});
+ return NumberUtils.max(new int[]{keywordsRes, schemaRes});
} else {
schema = cursorArgument.getSchema();
- if (aliases.containsKey(schema)) { // process alias case
+ if (aliases.containsKey(schema)) { // process alias case
String alias = aliases.get(schema);
int pointPos = alias.indexOf('.');
schema = alias.substring(0, pointPos);
table = alias.substring(pointPos + 1);
column = cursorArgument.getColumn();
List<CharSequence> columnCandidates = new ArrayList();
- int columnRes =
- completeColumn(
- schema, table, column, cursorArgument.getCursorPosition(), columnCandidates);
+ int columnRes = completeColumn(schema, table, column, cursorArgument.getCursorPosition(),
+ columnCandidates);
addCompletions(candidates, columnCandidates, CompletionType.column.name());
// process schema.table case
} else if (cursorArgument.getTable() != null && cursorArgument.getColumn() == null) {
List<CharSequence> tableCandidates = new ArrayList();
table = cursorArgument.getTable();
- int tableRes =
- completeTable(schema, table, cursorArgument.getCursorPosition(), tableCandidates);
+ int tableRes = completeTable(schema, table, cursorArgument.getCursorPosition(),
+ tableCandidates);
addCompletions(candidates, tableCandidates, CompletionType.table.name());
return tableRes;
} else {
List<CharSequence> columnCandidates = new ArrayList();
table = cursorArgument.getTable();
column = cursorArgument.getColumn();
- int columnRes =
- completeColumn(
- schema, table, column, cursorArgument.getCursorPosition(), columnCandidates);
+ int columnRes = completeColumn(schema, table, column, cursorArgument.getCursorPosition(),
+ columnCandidates);
addCompletions(candidates, columnCandidates, CompletionType.column.name());
}
}
@@ -511,13 +497,11 @@ public class SqlCompleter {
return this.sqlDelimiter;
}
- private void addCompletions(
- List<InterpreterCompletion> interpreterCompletions,
- List<CharSequence> candidates,
- String meta) {
+ private void addCompletions(List<InterpreterCompletion> interpreterCompletions,
+ List<CharSequence> candidates, String meta) {
for (CharSequence candidate : candidates) {
- interpreterCompletions.add(
- new InterpreterCompletion(candidate.toString(), candidate.toString(), meta));
+ interpreterCompletions.add(new InterpreterCompletion(candidate.toString(),
+ candidate.toString(), meta));
}
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
index 22f4703..b093ab2 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/security/JDBCSecurityImpl.java
@@ -19,29 +19,31 @@ package org.apache.zeppelin.jdbc.security;
import static org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod.KERBEROS;
import static org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod.SIMPLE;
-import java.io.IOException;
-import java.util.Properties;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/** Created for org.apache.zeppelin.jdbc.security on 09/07/16. */
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * Created for org.apache.zeppelin.jdbc.security on 09/07/16.
+ */
public class JDBCSecurityImpl {
private static final Logger LOGGER = LoggerFactory.getLogger(JDBCSecurityImpl.class);
- /**
- * *
- *
+ /***
* @param properties
*/
- public static void createSecureConfiguration(
- Properties properties, AuthenticationMethod authType) {
+ public static void createSecureConfiguration(Properties properties,
+ AuthenticationMethod authType) {
switch (authType) {
case KERBEROS:
- Configuration conf = new org.apache.hadoop.conf.Configuration();
+ Configuration conf = new
+ org.apache.hadoop.conf.Configuration();
conf.set("hadoop.security.authentication", KERBEROS.toString());
UserGroupInformation.setConfiguration(conf);
try {
@@ -55,13 +57,12 @@ public class JDBCSecurityImpl {
properties.getProperty("zeppelin.jdbc.principal"),
properties.getProperty("zeppelin.jdbc.keytab.location"));
} else {
- LOGGER.info(
- "The user has already logged in using Keytab and principal, "
- + "no action required");
+ LOGGER.info("The user has already logged in using Keytab and principal, " +
+ "no action required");
}
} catch (IOException e) {
- LOGGER.error(
- "Failed to get either keytab location or principal name in the " + "interpreter", e);
+ LOGGER.error("Failed to get either keytab location or principal name in the " +
+ "interpreter", e);
}
}
}
@@ -69,14 +70,11 @@ public class JDBCSecurityImpl {
public static AuthenticationMethod getAuthtype(Properties properties) {
AuthenticationMethod authType;
try {
- authType =
- AuthenticationMethod.valueOf(
- properties.getProperty("zeppelin.jdbc.auth.type").trim().toUpperCase());
+ authType = AuthenticationMethod.valueOf(properties.getProperty("zeppelin.jdbc.auth.type")
+ .trim().toUpperCase());
} catch (Exception e) {
- LOGGER.error(
- String.format(
- "Invalid auth.type detected with value %s, defaulting " + "auth.type to SIMPLE",
- properties.getProperty("zeppelin.jdbc.auth.type")));
+ LOGGER.error(String.format("Invalid auth.type detected with value %s, defaulting " +
+ "auth.type to SIMPLE", properties.getProperty("zeppelin.jdbc.auth.type")));
authType = SIMPLE;
}
return authType;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterInterpolationTest.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterInterpolationTest.java b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterInterpolationTest.java
index d602f95..d55f9fe 100644
--- a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterInterpolationTest.java
+++ b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterInterpolationTest.java
@@ -5,26 +5,16 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.apache.zeppelin.jdbc;
-import static java.lang.String.format;
-import static org.junit.Assert.assertEquals;
-
import com.mockrunner.jdbc.BasicJDBCTestCaseAdapter;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-import java.util.Properties;
import org.apache.zeppelin.interpreter.InterpreterContext;
import org.apache.zeppelin.interpreter.InterpreterResult;
import org.apache.zeppelin.resource.LocalResourcePool;
@@ -33,7 +23,20 @@ import org.apache.zeppelin.user.AuthenticationInfo;
import org.junit.Before;
import org.junit.Test;
-/** JDBC interpreter Z-variable interpolation unit tests. */
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.util.Properties;
+
+import static java.lang.String.format;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * JDBC interpreter Z-variable interpolation unit tests.
+ */
public class JDBCInterpreterInterpolationTest extends BasicJDBCTestCaseAdapter {
private static String jdbcConnection;
@@ -55,24 +58,22 @@ public class JDBCInterpreterInterpolationTest extends BasicJDBCTestCaseAdapter {
Connection connection = DriverManager.getConnection(getJdbcConnection());
Statement statement = connection.createStatement();
statement.execute(
- "DROP TABLE IF EXISTS test_table; "
- + "CREATE TABLE test_table(id varchar(255), name varchar(255));");
+ "DROP TABLE IF EXISTS test_table; " +
+ "CREATE TABLE test_table(id varchar(255), name varchar(255));");
Statement insertStatement = connection.createStatement();
- insertStatement.execute(
- "insert into test_table(id, name) values "
- + "('pro', 'processor'),"
- + "('mem', 'memory'),"
- + "('key', 'keyboard'),"
- + "('mou', 'mouse');");
+ insertStatement.execute("insert into test_table(id, name) values " +
+ "('pro', 'processor')," +
+ "('mem', 'memory')," +
+ "('key', 'keyboard')," +
+ "('mou', 'mouse');");
resourcePool = new LocalResourcePool("JdbcInterpolationTest");
- interpreterContext =
- InterpreterContext.builder()
- .setParagraphId("paragraph_1")
- .setAuthenticationInfo(new AuthenticationInfo("testUser"))
- .setResourcePool(resourcePool)
- .build();
+ interpreterContext = InterpreterContext.builder()
+ .setParagraphId("paragraph_1")
+ .setAuthenticationInfo(new AuthenticationInfo("testUser"))
+ .setResourcePool(resourcePool)
+ .build();
}
@Test
@@ -109,7 +110,8 @@ public class JDBCInterpreterInterpolationTest extends BasicJDBCTestCaseAdapter {
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(0).getType());
assertEquals(1, interpreterResult.message().size());
- assertEquals("ID\tNAME\nmem\tmemory\n", interpreterResult.message().get(0).getData());
+ assertEquals("ID\tNAME\nmem\tmemory\n",
+ interpreterResult.message().get(0).getData());
}
@Test
@@ -147,7 +149,8 @@ public class JDBCInterpreterInterpolationTest extends BasicJDBCTestCaseAdapter {
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(0).getType());
assertEquals(1, interpreterResult.message().size());
- assertEquals("ID\tNAME\nkey\tkeyboard\n", interpreterResult.message().get(0).getData());
+ assertEquals("ID\tNAME\nkey\tkeyboard\n",
+ interpreterResult.message().get(0).getData());
}
@Test
@@ -174,7 +177,8 @@ public class JDBCInterpreterInterpolationTest extends BasicJDBCTestCaseAdapter {
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(0).getType());
assertEquals(1, interpreterResult.message().size());
- assertEquals(
- "ID\tNAME\nkey\tkeyboard\nmou\tmouse\n", interpreterResult.message().get(0).getData());
+ assertEquals("ID\tNAME\nkey\tkeyboard\nmou\tmouse\n",
+ interpreterResult.message().get(0).getData());
}
+
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
----------------------------------------------------------------------
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 f66e2dd..62f6550 100644
--- a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
+++ b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
@@ -5,31 +5,36 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.apache.zeppelin.jdbc;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import static java.lang.String.format;
+
import static org.apache.zeppelin.jdbc.JDBCInterpreter.COMMON_MAX_LINE;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_DRIVER;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_PASSWORD;
-import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_PRECODE;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_STATEMENT_PRECODE;
-import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_URL;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_USER;
+import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_URL;
+import static org.apache.zeppelin.jdbc.JDBCInterpreter.DEFAULT_PRECODE;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.PRECODE_KEY_TEMPLATE;
+
+import org.junit.Before;
+import org.junit.Test;
import static org.apache.zeppelin.jdbc.JDBCInterpreter.STATEMENT_PRECODE_KEY_TEMPLATE;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import com.mockrunner.jdbc.BasicJDBCTestCaseAdapter;
+
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -42,6 +47,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+
+import com.mockrunner.jdbc.BasicJDBCTestCaseAdapter;
+
import org.apache.zeppelin.completer.CompletionType;
import org.apache.zeppelin.interpreter.InterpreterContext;
import org.apache.zeppelin.interpreter.InterpreterException;
@@ -53,10 +61,10 @@ import org.apache.zeppelin.scheduler.Scheduler;
import org.apache.zeppelin.user.AuthenticationInfo;
import org.apache.zeppelin.user.UserCredentials;
import org.apache.zeppelin.user.UsernamePassword;
-import org.junit.Before;
-import org.junit.Test;
-/** JDBC interpreter unit tests. */
+/**
+ * JDBC interpreter unit tests.
+ */
public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
static String jdbcConnection;
InterpreterContext interpreterContext;
@@ -87,36 +95,40 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
Connection connection = DriverManager.getConnection(getJdbcConnection());
Statement statement = connection.createStatement();
statement.execute(
- "DROP TABLE IF EXISTS test_table; "
- + "CREATE TABLE test_table(id varchar(255), name varchar(255));");
+ "DROP TABLE IF EXISTS test_table; " +
+ "CREATE TABLE test_table(id varchar(255), name varchar(255));");
- PreparedStatement insertStatement =
- connection.prepareStatement(
+ PreparedStatement insertStatement = connection.prepareStatement(
"insert into test_table(id, name) values ('a', 'a_name'),('b', 'b_name'),('c', ?);");
insertStatement.setString(1, null);
insertStatement.execute();
- interpreterContext =
- InterpreterContext.builder()
- .setAuthenticationInfo(new AuthenticationInfo("testUser"))
- .build();
+ interpreterContext = InterpreterContext.builder()
+ .setAuthenticationInfo(new AuthenticationInfo("testUser"))
+ .build();
}
+
@Test
public void testForParsePropertyKey() {
JDBCInterpreter t = new JDBCInterpreter(new Properties());
Map<String, String> localProperties = new HashMap<>();
- InterpreterContext interpreterContext =
- InterpreterContext.builder().setLocalProperties(localProperties).build();
+ InterpreterContext interpreterContext = InterpreterContext.builder()
+ .setLocalProperties(localProperties)
+ .build();
assertEquals(JDBCInterpreter.DEFAULT_KEY, t.getPropertyKey(interpreterContext));
localProperties = new HashMap<>();
localProperties.put("db", "mysql");
- interpreterContext = InterpreterContext.builder().setLocalProperties(localProperties).build();
+ interpreterContext = InterpreterContext.builder()
+ .setLocalProperties(localProperties)
+ .build();
assertEquals("mysql", t.getPropertyKey(interpreterContext));
localProperties = new HashMap<>();
localProperties.put("hive", "hive");
- interpreterContext = InterpreterContext.builder().setLocalProperties(localProperties).build();
+ interpreterContext = InterpreterContext.builder()
+ .setLocalProperties(localProperties)
+ .build();
assertEquals("hive", t.getPropertyKey(interpreterContext));
}
@@ -135,11 +147,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
String sqlQuery = "select * from test_table";
Map<String, String> localProperties = new HashMap<>();
localProperties.put("db", "fake");
- InterpreterContext context =
- InterpreterContext.builder()
- .setAuthenticationInfo(new AuthenticationInfo("testUser"))
- .setLocalProperties(localProperties)
- .build();
+ InterpreterContext context = InterpreterContext.builder()
+ .setAuthenticationInfo(new AuthenticationInfo("testUser"))
+ .setLocalProperties(localProperties)
+ .build();
InterpreterResult interpreterResult = t.interpret(sqlQuery, context);
// if prefix not found return ERROR and Prefix not found.
@@ -181,17 +192,17 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
@Test
public void testSplitSqlQuery() throws SQLException, IOException {
- String sqlQuery =
- "insert into test_table(id, name) values ('a', ';\"');"
- + "select * from test_table;"
- + "select * from test_table WHERE ID = \";'\";"
- + "select * from test_table WHERE ID = ';';"
- + "select '\n', ';';"
- + "select replace('A\\;B', '\\', 'text');"
- + "select '\\', ';';"
- + "select '''', ';';"
- + "select /*+ scan */ * from test_table;"
- + "--singleLineComment\nselect * from test_table";
+ String sqlQuery = "insert into test_table(id, name) values ('a', ';\"');" +
+ "select * from test_table;" +
+ "select * from test_table WHERE ID = \";'\";" +
+ "select * from test_table WHERE ID = ';';" +
+ "select '\n', ';';" +
+ "select replace('A\\;B', '\\', 'text');" +
+ "select '\\', ';';" +
+ "select '''', ';';" +
+ "select /*+ scan */ * from test_table;" +
+ "--singleLineComment\nselect * from test_table";
+
Properties properties = new Properties();
JDBCInterpreter t = new JDBCInterpreter(properties);
@@ -212,11 +223,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
@Test
public void testQueryWithEscapedCharacters() throws SQLException, IOException {
- String sqlQuery =
- "select '\\n', ';';"
- + "select replace('A\\;B', '\\', 'text');"
- + "select '\\', ';';"
- + "select '''', ';'";
+ String sqlQuery = "select '\\n', ';';" +
+ "select replace('A\\;B', '\\', 'text');" +
+ "select '\\', ';';" +
+ "select '''', ';'";
Properties properties = new Properties();
properties.setProperty("common.max_count", "1000");
@@ -255,14 +265,15 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
JDBCInterpreter t = new JDBCInterpreter(properties);
t.open();
- String sqlQuery = "select * from test_table;" + "select * from test_table WHERE ID = ';';";
+ String sqlQuery = "select * from test_table;" +
+ "select * from test_table WHERE ID = ';';";
InterpreterResult interpreterResult = t.interpret(sqlQuery, interpreterContext);
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
assertEquals(2, interpreterResult.message().size());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(0).getType());
- assertEquals(
- "ID\tNAME\na\ta_name\nb\tb_name\nc\tnull\n", interpreterResult.message().get(0).getData());
+ assertEquals("ID\tNAME\na\ta_name\nb\tb_name\nc\tnull\n",
+ interpreterResult.message().get(0).getData());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(1).getType());
assertEquals("ID\tNAME\n", interpreterResult.message().get(1).getData());
@@ -280,14 +291,15 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
JDBCInterpreter t = new JDBCInterpreter(properties);
t.open();
- String sqlQuery = "select * from test_table;" + "select * from test_table WHERE ID = ';';";
+ String sqlQuery = "select * from test_table;" +
+ "select * from test_table WHERE ID = ';';";
InterpreterResult interpreterResult = t.interpret(sqlQuery, interpreterContext);
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());
assertEquals(1, interpreterResult.message().size());
assertEquals(InterpreterResult.Type.TABLE, interpreterResult.message().get(0).getType());
- assertEquals(
- "ID\tNAME\na\ta_name\nb\tb_name\nc\tnull\n", interpreterResult.message().get(0).getData());
+ assertEquals("ID\tNAME\na\ta_name\nb\tb_name\nc\tnull\n",
+ interpreterResult.message().get(0).getData());
}
@Test
@@ -311,6 +323,7 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
assertEquals("ID\tNAME\nc\tnull\n", interpreterResult.message().get(0).getData());
}
+
@Test
public void testSelectQueryMaxResult() throws SQLException, IOException {
Properties properties = new Properties();
@@ -371,11 +384,11 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
jdbcInterpreter.interpret("", interpreterContext);
- List<InterpreterCompletion> completionList =
- jdbcInterpreter.completion("sel", 3, interpreterContext);
+ List<InterpreterCompletion> completionList = jdbcInterpreter.completion("sel", 3,
+ interpreterContext);
- InterpreterCompletion correctCompletionKeyword =
- new InterpreterCompletion("select", "select", CompletionType.keyword.name());
+ InterpreterCompletion correctCompletionKeyword = new InterpreterCompletion("select", "select",
+ CompletionType.keyword.name());
assertEquals(1, completionList.size());
assertEquals(true, completionList.contains(correctCompletionKeyword));
@@ -396,8 +409,8 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
return properties;
}
- private AuthenticationInfo getUserAuth(
- String user, String entityName, String dbUser, String dbPassword) {
+ private AuthenticationInfo getUserAuth(String user, String entityName, String dbUser,
+ String dbPassword) {
UserCredentials userCredentials = new UserCredentials();
if (entityName != null && dbUser != null && dbPassword != null) {
UsernamePassword up = new UsernamePassword(dbUser, dbPassword);
@@ -427,11 +440,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user1 runs jdbc1
jdbc1.open();
- InterpreterContext ctx1 =
- InterpreterContext.builder()
- .setAuthenticationInfo(user1Credential)
- .setReplName("jdbc1")
- .build();
+ InterpreterContext ctx1 = InterpreterContext.builder()
+ .setAuthenticationInfo(user1Credential)
+ .setReplName("jdbc1")
+ .build();
jdbc1.interpret("", ctx1);
JDBCUserConfigurations user1JDBC1Conf = jdbc1.getJDBCConfiguration("user1");
@@ -441,11 +453,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user1 runs jdbc2
jdbc2.open();
- InterpreterContext ctx2 =
- InterpreterContext.builder()
- .setAuthenticationInfo(user1Credential)
- .setReplName("jdbc2")
- .build();
+ InterpreterContext ctx2 = InterpreterContext.builder()
+ .setAuthenticationInfo(user1Credential)
+ .setReplName("jdbc2")
+ .build();
jdbc2.interpret("", ctx2);
JDBCUserConfigurations user1JDBC2Conf = jdbc2.getJDBCConfiguration("user1");
@@ -455,11 +466,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user2 runs jdbc1
jdbc1.open();
- InterpreterContext ctx3 =
- InterpreterContext.builder()
- .setAuthenticationInfo(user2Credential)
- .setReplName("jdbc1")
- .build();
+ InterpreterContext ctx3 = InterpreterContext.builder()
+ .setAuthenticationInfo(user2Credential)
+ .setReplName("jdbc1")
+ .build();
jdbc1.interpret("", ctx3);
JDBCUserConfigurations user2JDBC1Conf = jdbc1.getJDBCConfiguration("user2");
@@ -469,11 +479,10 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user2 runs jdbc2
jdbc2.open();
- InterpreterContext ctx4 =
- InterpreterContext.builder()
- .setAuthenticationInfo(user2Credential)
- .setReplName("jdbc2")
- .build();
+ InterpreterContext ctx4 = InterpreterContext.builder()
+ .setAuthenticationInfo(user2Credential)
+ .setReplName("jdbc2")
+ .build();
jdbc2.interpret("", ctx4);
JDBCUserConfigurations user2JDBC2Conf = jdbc2.getJDBCConfiguration("user2");
@@ -489,9 +498,8 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
properties.setProperty("default.url", getJdbcConnection());
properties.setProperty("default.user", "");
properties.setProperty("default.password", "");
- properties.setProperty(
- DEFAULT_PRECODE,
- "create table test_precode (id int); insert into test_precode values (1);");
+ properties.setProperty(DEFAULT_PRECODE,
+ "create table test_precode (id int); insert into test_precode values (1);");
JDBCInterpreter jdbcInterpreter = new JDBCInterpreter(properties);
jdbcInterpreter.open();
jdbcInterpreter.executePrecode(interpreterContext);
@@ -533,19 +541,17 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
properties.setProperty("anotherPrefix.url", getJdbcConnection());
properties.setProperty("anotherPrefix.user", "");
properties.setProperty("anotherPrefix.password", "");
- properties.setProperty(
- String.format(PRECODE_KEY_TEMPLATE, "anotherPrefix"),
- "create table test_precode_2 (id int); insert into test_precode_2 values (2);");
+ properties.setProperty(String.format(PRECODE_KEY_TEMPLATE, "anotherPrefix"),
+ "create table test_precode_2 (id int); insert into test_precode_2 values (2);");
JDBCInterpreter jdbcInterpreter = new JDBCInterpreter(properties);
jdbcInterpreter.open();
Map<String, String> localProperties = new HashMap<>();
localProperties.put("db", "anotherPrefix");
- InterpreterContext context =
- InterpreterContext.builder()
- .setAuthenticationInfo(new AuthenticationInfo("testUser"))
- .setLocalProperties(localProperties)
- .build();
+ InterpreterContext context = InterpreterContext.builder()
+ .setAuthenticationInfo(new AuthenticationInfo("testUser"))
+ .setLocalProperties(localProperties)
+ .build();
jdbcInterpreter.executePrecode(context);
String sqlQuery = "select * from test_precode_2";
@@ -603,19 +609,17 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
properties.setProperty("anotherPrefix.url", getJdbcConnection());
properties.setProperty("anotherPrefix.user", "");
properties.setProperty("anotherPrefix.password", "");
- properties.setProperty(
- String.format(STATEMENT_PRECODE_KEY_TEMPLATE, "anotherPrefix"),
- "set @v='statementAnotherPrefix'");
+ properties.setProperty(String.format(STATEMENT_PRECODE_KEY_TEMPLATE, "anotherPrefix"),
+ "set @v='statementAnotherPrefix'");
JDBCInterpreter jdbcInterpreter = new JDBCInterpreter(properties);
jdbcInterpreter.open();
Map<String, String> localProperties = new HashMap<>();
localProperties.put("db", "anotherPrefix");
- InterpreterContext context =
- InterpreterContext.builder()
- .setAuthenticationInfo(new AuthenticationInfo("testUser"))
- .setLocalProperties(localProperties)
- .build();
+ InterpreterContext context = InterpreterContext.builder()
+ .setAuthenticationInfo(new AuthenticationInfo("testUser"))
+ .setLocalProperties(localProperties)
+ .build();
String sqlQuery = "select @v";
@@ -639,17 +643,16 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
JDBCInterpreter t = new JDBCInterpreter(properties);
t.open();
- String sqlQuery =
- "/* ; */\n"
- + "-- /* comment\n"
- + "--select * from test_table\n"
- + "select * from test_table; /* some comment ; */\n"
- + "/*\n"
- + "select * from test_table;\n"
- + "*/\n"
- + "-- a ; b\n"
- + "select * from test_table WHERE ID = ';--';\n"
- + "select * from test_table WHERE ID = '/*' -- test";
+ String sqlQuery = "/* ; */\n" +
+ "-- /* comment\n" +
+ "--select * from test_table\n" +
+ "select * from test_table; /* some comment ; */\n" +
+ "/*\n" +
+ "select * from test_table;\n" +
+ "*/\n" +
+ "-- a ; b\n" +
+ "select * from test_table WHERE ID = ';--';\n" +
+ "select * from test_table WHERE ID = '/*' -- test";
InterpreterResult interpreterResult = t.interpret(sqlQuery, interpreterContext);
assertEquals(InterpreterResult.Code.SUCCESS, interpreterResult.code());