diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java index d785513c19e36cf6d4554d599ef2279055f48316..ce136edb9c69ba56d9b3d726c6eae8e2cac34707 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java @@ -83,7 +83,7 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { } } - protected void bindGeometryParameter(JDBCSession session, JDBCPreparedStatement statement, int paramIndex, Geometry value) throws SQLException, DBCException { + protected void bindGeometryParameter(@NotNull JDBCSession session, @NotNull JDBCPreparedStatement statement, int paramIndex, @NotNull Geometry value) throws SQLException, DBCException { bindBytes(statement, paramIndex, convertGeometryToBinaryFormat(session, value)); } @@ -141,11 +141,11 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { return super.getValueDisplayString(column, value, format); } - protected byte[] fetchBytes(JDBCResultSet resultSet, int index) throws SQLException { + protected byte[] fetchBytes(@NotNull JDBCResultSet resultSet, int index) throws SQLException { return resultSet.getBytes(index); } - protected void bindBytes(JDBCPreparedStatement dbStat, int index, byte[] bytes) throws SQLException { + protected void bindBytes(@NotNull JDBCPreparedStatement dbStat, int index, @NotNull byte[] bytes) throws SQLException { dbStat.setBytes(index, bytes); } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDValueBinder.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDValueBinder.java new file mode 100644 index 0000000000000000000000000000000000000000..b8311f98867365ee36bf660d3c9a757e4d49b8d1 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDValueBinder.java @@ -0,0 +1,31 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org) + * + * 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.model.data; + +import org.jkiss.dbeaver.model.exec.DBCException; +import org.jkiss.dbeaver.model.struct.DBSAttributeBase; + +/** + * Provides possibility to override default SQL query binding + */ +public interface DBDValueBinder extends DBDValueHandler +{ + + String makeQueryBind(DBSAttributeBase attribute) throws DBCException; + +} diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/ExecuteBatchImpl.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/ExecuteBatchImpl.java index e5f8b5a9de563a6f2411f1dd185b659c737ca460..95dc4578e67d9f62cf3623814b3259fbb7aec8c8 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/ExecuteBatchImpl.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/data/ExecuteBatchImpl.java @@ -148,7 +148,7 @@ public abstract class ExecuteBatchImpl implements DBSDataManipulator.ExecuteBatc } } if (statement == null || !reuse) { - statement = prepareStatement(session, rowValues); + statement = prepareStatement(session, handlers, rowValues); statistics.setQueryText(statement.getQueryString()); statistics.addStatementsCount(); } @@ -324,7 +324,7 @@ public abstract class ExecuteBatchImpl implements DBSDataManipulator.ExecuteBatc } @NotNull - protected abstract DBCStatement prepareStatement(@NotNull DBCSession session, Object[] attributeValues) throws DBCException; + protected abstract DBCStatement prepareStatement(@NotNull DBCSession session, DBDValueHandler[] handlers, Object[] attributeValues) throws DBCException; protected abstract void bindStatement(@NotNull DBDValueHandler[] handlers, @NotNull DBCStatement statement, Object[] attributeValues) throws DBCException; diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java index 633c14441c1f8ada3338706aefdd2755874305ff..83a8a07b91ef317967e51e13471d5f3ad28320e2 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/struct/JDBCTable.java @@ -325,7 +325,7 @@ public abstract class JDBCTable 0) { query.append("\nWHERE "); //$NON-NLS-1$ @@ -477,7 +490,7 @@ public abstract class JDBCTable