提交 2d75f862 编写于 作者: S Serge Rider

Merge remote-tracking branch 'origin/devel' into devel

......@@ -17,16 +17,21 @@
package org.jkiss.dbeaver.ext.clickhouse.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.DBValueFormatting;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCStructImpl;
import org.jkiss.dbeaver.model.impl.jdbc.data.JDBCComposite;
import org.jkiss.dbeaver.model.impl.jdbc.data.JDBCCompositeDynamic;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCStructValueHandler;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.utils.ArrayUtils;
import java.util.Collection;
public class ClickhouseStructValueHandler extends JDBCStructValueHandler {
public static final ClickhouseStructValueHandler INSTANCE = new ClickhouseStructValueHandler();
@Override
......@@ -37,4 +42,16 @@ public class ClickhouseStructValueHandler extends JDBCStructValueHandler {
return super.getValueFromObject(session, type, object, copy, validateValue);
}
}
@NotNull
@Override
public String getValueDisplayString(@NotNull DBSTypedObject column, Object value, @NotNull DBDDisplayFormat format) {
if (value instanceof JDBCComposite) {
Object[] values = ((JDBCComposite) value).getValues();
if (!ArrayUtils.isEmpty(values)) {
return DBValueFormatting.getDefaultValueDisplayString(values, format);
}
}
return super.getValueDisplayString(column, value, format);
}
}
......@@ -27,6 +27,8 @@ import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect;
import org.jkiss.dbeaver.model.sql.SQLConstants;
import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure;
import org.jkiss.dbeaver.model.struct.rdb.DBSProcedureType;
import org.jkiss.utils.ArrayUtils;
import java.util.Arrays;
......@@ -230,8 +232,9 @@ class MySQLDialect extends JDBCSQLDialect {
}
@Override
protected boolean useBracketsForExec() {
return true;
protected boolean useBracketsForExec(DBSProcedure procedure) {
// Use brackets for CallableStatement. Support for procedures only
return procedure.getProcedureType() == DBSProcedureType.PROCEDURE;
}
@NotNull
......
......@@ -774,7 +774,7 @@ public abstract class AbstractSQLDialect implements SQLDialect {
return maxParamLength;
}
protected boolean useBracketsForExec() {
protected boolean useBracketsForExec(DBSProcedure procedure) {
return false;
}
......@@ -800,7 +800,7 @@ public abstract class AbstractSQLDialect implements SQLDialect {
inParameters.addAll(parameters);
}
//getMaxParameterLength(parameters, inParameters);
boolean useBrackets = useBracketsForExec();
boolean useBrackets = useBracketsForExec(proc);
if (useBrackets) sql.append("{ ");
sql.append(getStoredProcedureCallInitialClause(proc)).append("(");
if (!inParameters.isEmpty()) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册