diff --git a/grid/core-impl/src/extractors/BaseObjectFormatter.java b/grid/core-impl/src/extractors/BaseObjectFormatter.java index 0d8f8cd7578b..33f35cc399b1 100644 --- a/grid/core-impl/src/extractors/BaseObjectFormatter.java +++ b/grid/core-impl/src/extractors/BaseObjectFormatter.java @@ -2,10 +2,10 @@ package com.intellij.database.extractors; import com.intellij.database.datagrid.GridColumn; import com.intellij.database.datagrid.JdbcColumnDescriptor; -import com.intellij.database.remote.jdbc.LobInfo; import com.intellij.database.run.ReservedCellValue; import com.intellij.database.run.ui.grid.editors.FormatsCache; import com.intellij.database.run.ui.grid.editors.Formatter; +import com.intellij.database.util.LobInfoHelper; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ClassMap; @@ -202,7 +202,7 @@ public class BaseObjectFormatter implements ObjectFormatter { } StringBuilder sb = new StringBuilder(); sb.append("{"); - int len = Math.min(o.length, config.getMode() == ObjectFormatterMode.DISPLAY ? LobInfo.MAX_ARRAY_SIZE : o.length); + int len = Math.min(o.length, config.getMode() == ObjectFormatterMode.DISPLAY ? LobInfoHelper.MAX_ARRAY_SIZE : o.length); DatabaseObjectFormatterConfig.DatabaseDisplayObjectFormatterConfig itemConfig = new DatabaseObjectFormatterConfig.DatabaseDisplayObjectFormatterConfig( null, false, null, config.getSettings() diff --git a/grid/core-impl/src/util/LobInfoHelper.kt b/grid/core-impl/src/util/LobInfoHelper.kt new file mode 100644 index 000000000000..169429306c38 --- /dev/null +++ b/grid/core-impl/src/util/LobInfoHelper.kt @@ -0,0 +1,10 @@ +package com.intellij.database.util + +import com.intellij.openapi.util.registry.Registry.Companion.intValue + +class LobInfoHelper { + companion object { + @JvmField + val MAX_ARRAY_SIZE: Int = intValue("database.arrays.maxSize", 1000) + } +} \ No newline at end of file diff --git a/grid/impl/src/run/ui/grid/editors/DefaultTextEditorFactory.java b/grid/impl/src/run/ui/grid/editors/DefaultTextEditorFactory.java index 2e0c1d0d1287..0a359dcc0501 100644 --- a/grid/impl/src/run/ui/grid/editors/DefaultTextEditorFactory.java +++ b/grid/impl/src/run/ui/grid/editors/DefaultTextEditorFactory.java @@ -8,6 +8,7 @@ import com.intellij.database.run.ReservedCellValue; import com.intellij.database.run.actions.LoadFileAction; import com.intellij.database.run.ui.DataAccessType; import com.intellij.database.settings.DataGridSettings; +import com.intellij.database.util.LobInfoHelper; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; @@ -68,7 +69,8 @@ public class DefaultTextEditorFactory implements GridCellEditorFactory { protected static boolean isEditable(Object value) { if (value == null || value instanceof String || value instanceof ReservedCellValue || value instanceof LobInfo && !((LobInfo)value).isTruncated() && - (value instanceof LobInfo.ClobInfo || ((LobInfo)value).length == 0)) { + (value instanceof LobInfo.ClobInfo || ((LobInfo)value).length == 0) || + (value instanceof Object[] objArr && objArr.length < LobInfoHelper.MAX_ARRAY_SIZE)) { return true; } return false; diff --git a/grid/types/src/remote/jdbc/LobInfo.java b/grid/types/src/remote/jdbc/LobInfo.java index da520d3db0b2..98059612e3e6 100644 --- a/grid/types/src/remote/jdbc/LobInfo.java +++ b/grid/types/src/remote/jdbc/LobInfo.java @@ -18,7 +18,6 @@ import java.util.Objects; * @author gregsh */ public abstract class LobInfo> implements Comparable, Serializable { - public static final int MAX_ARRAY_SIZE = 100; public final long length; private static final ThreadLocal BUFFER = new ThreadLocal() {