diff --git a/backend/framework/src/main/java/org/jumpserver/chen/framework/datasource/base/BaseSQLActuator.java b/backend/framework/src/main/java/org/jumpserver/chen/framework/datasource/base/BaseSQLActuator.java index c17dd4a..74ef03c 100644 --- a/backend/framework/src/main/java/org/jumpserver/chen/framework/datasource/base/BaseSQLActuator.java +++ b/backend/framework/src/main/java/org/jumpserver/chen/framework/datasource/base/BaseSQLActuator.java @@ -168,6 +168,8 @@ private void executeStatement(SQLExecutePlan plan, Statement statement, SQLQuery fs.add(HexUtils.bytesToHex((byte[]) obj)); } else if (obj instanceof Blob) { fs.add(HexUtils.bytesToHex(((Blob) obj).getBytes(1, (int) ((Blob) obj).length()))); + } else if (obj!= null && obj.getClass().getSimpleName().equalsIgnoreCase("pgobject")) { + fs.add(obj.toString()); } else { fs.add(obj); } diff --git a/backend/modules/src/main/java/org.jumpserver.chen.modules/mysql/MysqlConnectionManager.java b/backend/modules/src/main/java/org.jumpserver.chen.modules/mysql/MysqlConnectionManager.java index 57fcc4a..595a6d1 100644 --- a/backend/modules/src/main/java/org.jumpserver.chen.modules/mysql/MysqlConnectionManager.java +++ b/backend/modules/src/main/java/org.jumpserver.chen.modules/mysql/MysqlConnectionManager.java @@ -7,7 +7,12 @@ import org.jumpserver.chen.framework.datasource.sql.SQL; import org.jumpserver.chen.modules.base.ssl.JKSGenerator; +import java.sql.Connection; import java.sql.SQLException; +import java.sql.Statement; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import java.util.Properties; public class MysqlConnectionManager extends BaseConnectionManager { @@ -33,6 +38,34 @@ public void ping() throws SQLException { } + @Override + public Connection getConnection() throws SQLException { + var conn = super.getConnection(); + setTimeZone(conn); + return conn; + } + + @Override + public Connection getPhysicalConnection() throws SQLException { + var conn = super.getPhysicalConnection(); + setTimeZone(conn); + return conn; + } + + private void setTimeZone(Connection conn) throws SQLException { + ZoneId zoneId = ZoneId.systemDefault(); + + ZonedDateTime now = ZonedDateTime.now(zoneId); + ZoneOffset offset = now.getOffset(); + + String offsetStr = offset.toString(); + + try (Statement stmt = conn.createStatement()) { + stmt.execute("SET time_zone = '" + offsetStr + "'"); + } + } + + protected void setSSLProps(Properties props) { if (this.getConnectInfo().getOptions().get("useSSL") != null && (boolean) this.getConnectInfo().getOptions().get("useSSL")) {