From d0c624a6e911e68de527133f26bae6e74699756d Mon Sep 17 00:00:00 2001 From: Stefan Uhrig Date: Wed, 10 Apr 2024 17:12:11 +0200 Subject: [PATCH 1/5] dbeaver/dbeaver#23390 Support REAL_VECTOR type in HANA plugin The new vector data type REAL_VECTOR was introduced with HANA Cloud Database QRC 1/2024. Details about the new type are available in the SAP HANA Database Vector Engine Guide. HANA's JDBC driver natively supports that type starting with version 2.21.5. This change introduces a new value handler so that vectors are displayed like arrays. Furthermore, the column type modifiers are adapted to display vector dimension constraints. --- plugins/org.jkiss.dbeaver.ext.hana/plugin.xml | 1 + .../ext/hana/model/HANADataSource.java | 9 +++ .../ext/hana/model/HANASQLDialect.java | 8 +- .../model/data/HANAValueHandlerProvider.java | 2 + .../model/data/HANAVectorValueHandler.java | 79 +++++++++++++++++++ 5 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java diff --git a/plugins/org.jkiss.dbeaver.ext.hana/plugin.xml b/plugins/org.jkiss.dbeaver.ext.hana/plugin.xml index e76e4a792bb2..7cafb2af1028 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.hana/plugin.xml @@ -165,6 +165,7 @@ + diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java index 702d77be256e..539490e2f1cc 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java @@ -23,6 +23,7 @@ import org.jkiss.dbeaver.ext.generic.model.GenericDataSource; import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel; import org.jkiss.dbeaver.ext.hana.model.plan.HANAPlanAnalyser; +import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.DBPDataSourceContainer; import org.jkiss.dbeaver.model.DBPDataSourceInfo; import org.jkiss.dbeaver.model.DBUtils; @@ -72,6 +73,14 @@ protected DBPDataSourceInfo createDataSourceInfo(DBRProgressMonitor monitor, @No return info; } + @Override + public DBPDataKind resolveDataKind(String typeName, int valueType) { + if ("REAL_VECTOR".equalsIgnoreCase(typeName)) { + return DBPDataKind.ARRAY; + } + return super.resolveDataKind(typeName, valueType); + } + /* * search */ diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java index 767bd56eee52..8051533c68a7 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java @@ -172,7 +172,13 @@ public String getDualTableName() { public String getColumnTypeModifiers(@NotNull DBPDataSource dataSource, @NotNull DBSTypedObject column, @NotNull String typeName, @NotNull DBPDataKind dataKind) { String ucTypeName = CommonUtils.notEmpty(typeName).toUpperCase(Locale.ENGLISH); - if (("ST_POINT".equals(ucTypeName) || "ST_GEOMETRY".equals(ucTypeName)) + if ("REAL_VECTOR".equals(ucTypeName)) { + long dim = column.getMaxLength(); + if ((dim > 0) && (dim <= 65000)) { + return "(" + Long.toString(dim) + ")"; + } + return ""; + } else if (("ST_POINT".equals(ucTypeName) || "ST_GEOMETRY".equals(ucTypeName)) && (column instanceof HANATableColumn)) { HANATableColumn hanaColumn = (HANATableColumn) column; try { diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java index 56a00dde6053..c6b49909916f 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java @@ -33,6 +33,8 @@ public class HANAValueHandlerProvider implements DBDValueHandlerProvider { public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) { switch (typedObject.getTypeName()) { + case "REAL_VECTOR": + return HANAVectorValueHandler.INSTANCE; case "ST_GEOMETRY": case "ST_POINT": return HANAGeometryValueHandler.INSTANCE; diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java new file mode 100644 index 000000000000..f56c65511c07 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java @@ -0,0 +1,79 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.jkiss.dbeaver.ext.hana.model.data; + +import java.sql.SQLException; +import java.sql.Types; + +import org.jkiss.dbeaver.model.data.DBDCollection; +import org.jkiss.dbeaver.model.exec.DBCException; +import org.jkiss.dbeaver.model.exec.DBCLogicalOperator; +import org.jkiss.dbeaver.model.exec.DBCSession; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; +import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; +import org.jkiss.dbeaver.model.impl.jdbc.data.JDBCCollection; +import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCArrayValueHandler; +import org.jkiss.dbeaver.model.struct.DBSTypedObject; + +public class HANAVectorValueHandler extends JDBCArrayValueHandler { + + public static final HANAVectorValueHandler INSTANCE = new HANAVectorValueHandler(); + + @Override + protected boolean useGetArray(DBCSession session, DBSTypedObject type) { + return true; + } + + @Override + protected void bindParameter(JDBCSession session, JDBCPreparedStatement statement, DBSTypedObject paramType, + int paramIndex, Object value) throws DBCException, SQLException { + if (value == null) { + statement.setNull(paramIndex, Types.ARRAY); + } else if (value instanceof DBDCollection) { + DBDCollection collection = (DBDCollection) value; + if (collection.isNull()) { + statement.setNull(paramIndex, Types.ARRAY); + } else if (collection instanceof JDBCCollection) { + JDBCCollection jc = (JDBCCollection) collection; + if (jc.getComponentType().getTypeID() != Types.REAL) { + throw new DBCException("Only REAL numbers are allowed in vectors"); + } + float[] nvals = new float[jc.size()]; + for (int i = 0; i < nvals.length; ++i) { + Float val = (Float) jc.get(i); + if (val == null) { + throw new DBCException("NULL elements are not allowed in vectors"); + } + nvals[i] = val; + } + statement.setObject(paramIndex, nvals); + } else { + throw new DBCException("Array parameter type '" + value.getClass().getName() + "' not supported"); + } + } else { + throw new DBCException("Array parameter type '" + value.getClass().getName() + "' not supported"); + } + } + + private static DBCLogicalOperator[] SUPPORTED_OPERATORS = { DBCLogicalOperator.IS_NOT_NULL, + DBCLogicalOperator.IS_NULL }; + + @Override + public DBCLogicalOperator[] getSupportedOperators(DBSTypedObject attribute) { + return SUPPORTED_OPERATORS; + } +} From 190c4d35cab1a42c4e8809e98b669459b236ab1f Mon Sep 17 00:00:00 2001 From: Stefan Uhrig Date: Wed, 10 Apr 2024 17:46:35 +0200 Subject: [PATCH 2/5] Fix codacity issue --- .../dbeaver/ext/hana/model/data/HANAVectorValueHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java index f56c65511c07..7be904c9831f 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAVectorValueHandler.java @@ -33,6 +33,9 @@ public class HANAVectorValueHandler extends JDBCArrayValueHandler { public static final HANAVectorValueHandler INSTANCE = new HANAVectorValueHandler(); + private static DBCLogicalOperator[] SUPPORTED_OPERATORS = { DBCLogicalOperator.IS_NOT_NULL, + DBCLogicalOperator.IS_NULL }; + @Override protected boolean useGetArray(DBCSession session, DBSTypedObject type) { return true; @@ -69,9 +72,6 @@ protected void bindParameter(JDBCSession session, JDBCPreparedStatement statemen } } - private static DBCLogicalOperator[] SUPPORTED_OPERATORS = { DBCLogicalOperator.IS_NOT_NULL, - DBCLogicalOperator.IS_NULL }; - @Override public DBCLogicalOperator[] getSupportedOperators(DBSTypedObject attribute) { return SUPPORTED_OPERATORS; From 222254379e36f502e3c8a7a08a3944dded1e63a4 Mon Sep 17 00:00:00 2001 From: Stefan Uhrig Date: Thu, 11 Apr 2024 15:05:37 +0200 Subject: [PATCH 3/5] Move data type name to HANAConstants class --- .../src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java | 3 +++ .../src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java index 9f2c4035fd3d..53aaa2772a5e 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java @@ -24,4 +24,7 @@ public class HANAConstants { // pseudo schema for PUBLIC SYNONYMs public static final String SCHEMA_PUBLIC = "PUBLIC"; + + // Data type names + public static final String DATATYPENAME_REAL_VECTOR = "REAL_VECTOR"; } diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java index 539490e2f1cc..88adbe83067c 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java @@ -75,7 +75,7 @@ protected DBPDataSourceInfo createDataSourceInfo(DBRProgressMonitor monitor, @No @Override public DBPDataKind resolveDataKind(String typeName, int valueType) { - if ("REAL_VECTOR".equalsIgnoreCase(typeName)) { + if (HANAConstants.DATATYPENAME_REAL_VECTOR.equalsIgnoreCase(typeName)) { return DBPDataKind.ARRAY; } return super.resolveDataKind(typeName, valueType); From 075685d141ace4478e3848a6c51b307100665216 Mon Sep 17 00:00:00 2001 From: Stefan Uhrig Date: Mon, 15 Apr 2024 11:09:12 +0200 Subject: [PATCH 4/5] Introduce constants for datatype names --- .../org/jkiss/dbeaver/ext/hana/model/HANAConstants.java | 2 ++ .../org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java | 5 +++-- .../ext/hana/model/data/HANAValueHandlerProvider.java | 7 ++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java index 53aaa2772a5e..5a5913abb455 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java @@ -27,4 +27,6 @@ public class HANAConstants { // Data type names public static final String DATATYPENAME_REAL_VECTOR = "REAL_VECTOR"; + public static final String DATATYPENAME_ST_GEOMETRY = "ST_GEOMETRY"; + public static final String DATATYPENAME_ST_POINT = "ST_POINT"; } diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java index 8051533c68a7..a3894c60560d 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java @@ -172,13 +172,14 @@ public String getDualTableName() { public String getColumnTypeModifiers(@NotNull DBPDataSource dataSource, @NotNull DBSTypedObject column, @NotNull String typeName, @NotNull DBPDataKind dataKind) { String ucTypeName = CommonUtils.notEmpty(typeName).toUpperCase(Locale.ENGLISH); - if ("REAL_VECTOR".equals(ucTypeName)) { + if (HANAConstants.DATATYPENAME_REAL_VECTOR.equals(ucTypeName)) { long dim = column.getMaxLength(); if ((dim > 0) && (dim <= 65000)) { return "(" + Long.toString(dim) + ")"; } return ""; - } else if (("ST_POINT".equals(ucTypeName) || "ST_GEOMETRY".equals(ucTypeName)) + } else if ((HANAConstants.DATATYPENAME_ST_POINT.equals(ucTypeName) + || HANAConstants.DATATYPENAME_ST_GEOMETRY.equals(ucTypeName)) && (column instanceof HANATableColumn)) { HANATableColumn hanaColumn = (HANATableColumn) column; try { diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java index c6b49909916f..5e786b3b2316 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java @@ -20,6 +20,7 @@ package org.jkiss.dbeaver.ext.hana.model.data; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.ext.hana.model.HANAConstants; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.data.DBDFormatSettings; import org.jkiss.dbeaver.model.data.DBDValueHandler; @@ -33,10 +34,10 @@ public class HANAValueHandlerProvider implements DBDValueHandlerProvider { public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) { switch (typedObject.getTypeName()) { - case "REAL_VECTOR": + case HANAConstants.DATATYPENAME_REAL_VECTOR: return HANAVectorValueHandler.INSTANCE; - case "ST_GEOMETRY": - case "ST_POINT": + case HANAConstants.DATATYPENAME_ST_GEOMETRY: + case HANAConstants.DATATYPENAME_ST_POINT: return HANAGeometryValueHandler.INSTANCE; default: return null; From 4c2b8de9016c189791f4a4db25cd9427091bd674 Mon Sep 17 00:00:00 2001 From: Stefan Uhrig Date: Mon, 15 Apr 2024 11:46:35 +0200 Subject: [PATCH 5/5] Change data type constant name prefix Change data type constant prefix from DATATYPENAME to DATA_TYPE_NAME. --- .../src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java | 6 +++--- .../org/jkiss/dbeaver/ext/hana/model/HANADataSource.java | 2 +- .../org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java | 6 +++--- .../ext/hana/model/data/HANAValueHandlerProvider.java | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java index 5a5913abb455..10e005331f8d 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANAConstants.java @@ -26,7 +26,7 @@ public class HANAConstants { public static final String SCHEMA_PUBLIC = "PUBLIC"; // Data type names - public static final String DATATYPENAME_REAL_VECTOR = "REAL_VECTOR"; - public static final String DATATYPENAME_ST_GEOMETRY = "ST_GEOMETRY"; - public static final String DATATYPENAME_ST_POINT = "ST_POINT"; + public static final String DATA_TYPE_NAME_REAL_VECTOR = "REAL_VECTOR"; + public static final String DATA_TYPE_NAME_ST_GEOMETRY = "ST_GEOMETRY"; + public static final String DATA_TYPE_NAME_ST_POINT = "ST_POINT"; } diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java index 88adbe83067c..277424cc4ed1 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANADataSource.java @@ -75,7 +75,7 @@ protected DBPDataSourceInfo createDataSourceInfo(DBRProgressMonitor monitor, @No @Override public DBPDataKind resolveDataKind(String typeName, int valueType) { - if (HANAConstants.DATATYPENAME_REAL_VECTOR.equalsIgnoreCase(typeName)) { + if (HANAConstants.DATA_TYPE_NAME_REAL_VECTOR.equalsIgnoreCase(typeName)) { return DBPDataKind.ARRAY; } return super.resolveDataKind(typeName, valueType); diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java index a3894c60560d..ee6db5b973e4 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/HANASQLDialect.java @@ -172,14 +172,14 @@ public String getDualTableName() { public String getColumnTypeModifiers(@NotNull DBPDataSource dataSource, @NotNull DBSTypedObject column, @NotNull String typeName, @NotNull DBPDataKind dataKind) { String ucTypeName = CommonUtils.notEmpty(typeName).toUpperCase(Locale.ENGLISH); - if (HANAConstants.DATATYPENAME_REAL_VECTOR.equals(ucTypeName)) { + if (HANAConstants.DATA_TYPE_NAME_REAL_VECTOR.equals(ucTypeName)) { long dim = column.getMaxLength(); if ((dim > 0) && (dim <= 65000)) { return "(" + Long.toString(dim) + ")"; } return ""; - } else if ((HANAConstants.DATATYPENAME_ST_POINT.equals(ucTypeName) - || HANAConstants.DATATYPENAME_ST_GEOMETRY.equals(ucTypeName)) + } else if ((HANAConstants.DATA_TYPE_NAME_ST_POINT.equals(ucTypeName) + || HANAConstants.DATA_TYPE_NAME_ST_GEOMETRY.equals(ucTypeName)) && (column instanceof HANATableColumn)) { HANATableColumn hanaColumn = (HANATableColumn) column; try { diff --git a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java index 5e786b3b2316..18ccf5e4f83c 100644 --- a/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java +++ b/plugins/org.jkiss.dbeaver.ext.hana/src/org/jkiss/dbeaver/ext/hana/model/data/HANAValueHandlerProvider.java @@ -34,10 +34,10 @@ public class HANAValueHandlerProvider implements DBDValueHandlerProvider { public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) { switch (typedObject.getTypeName()) { - case HANAConstants.DATATYPENAME_REAL_VECTOR: + case HANAConstants.DATA_TYPE_NAME_REAL_VECTOR: return HANAVectorValueHandler.INSTANCE; - case HANAConstants.DATATYPENAME_ST_GEOMETRY: - case HANAConstants.DATATYPENAME_ST_POINT: + case HANAConstants.DATA_TYPE_NAME_ST_GEOMETRY: + case HANAConstants.DATA_TYPE_NAME_ST_POINT: return HANAGeometryValueHandler.INSTANCE; default: return null;