From 5b9228e9f7208594d361b5aaa9815aa8bf58e82f Mon Sep 17 00:00:00 2001 From: serge-rider Date: Thu, 9 Aug 2018 00:51:54 +0300 Subject: [PATCH] MySQL: year data type edit support --- .../jkiss/dbeaver/ext/mysql/MySQLConstants.java | 1 + .../mysql/data/MySQLDateTimeValueHandler.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLConstants.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLConstants.java index 271634f599..0cbde01d14 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLConstants.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/MySQLConstants.java @@ -196,6 +196,7 @@ public class MySQLConstants { public static final String TYPE_VARCHAR = "varchar"; public static final String TYPE_JSON = "json"; public static final String TYPE_GEOMETRY = "geometry"; + public static final String TYPE_YEAR = "year"; public static final String BIN_FOLDER = "bin"; public static final String ENV_VARIABLE_MYSQL_PWD = "MYSQL_PWD"; diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/data/MySQLDateTimeValueHandler.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/data/MySQLDateTimeValueHandler.java index f2aa25249b..fb0143e4f5 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/data/MySQLDateTimeValueHandler.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/data/MySQLDateTimeValueHandler.java @@ -18,6 +18,7 @@ package org.jkiss.dbeaver.ext.mysql.data; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.ext.mysql.MySQLConstants; import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; import org.jkiss.dbeaver.model.data.DBDDisplayFormat; import org.jkiss.dbeaver.model.exec.DBCException; @@ -31,6 +32,7 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject; import java.sql.SQLException; import java.sql.Types; +import java.util.Calendar; import java.util.Date; /** @@ -69,6 +71,20 @@ public class MySQLDateTimeValueHandler extends JDBCDateTimeValueHandler { catch (SQLException e) { throw new DBCException(ModelMessages.model_jdbc_exception_could_not_bind_statement_parameter, e); } + } else if (MySQLConstants.TYPE_YEAR.equals(type.getTypeName())) { + try { + JDBCPreparedStatement dbStat = (JDBCPreparedStatement)statement; + if (value instanceof Number) { + dbStat.setInt(index + 1, ((Number) value).intValue()); + } else if (value instanceof Date) { + Calendar cal = Calendar.getInstance(); + cal.setTime((Date) value); + dbStat.setInt(index + 1, cal.get(Calendar.YEAR)); + } + } + catch (SQLException e) { + throw new DBCException(ModelMessages.model_jdbc_exception_could_not_bind_statement_parameter, e); + } } else { super.bindValueObject(session, statement, type, index, value); } -- GitLab