提交 411b277f 编写于 作者: S serge@jkiss.org

#6015 PG: temporal accessor handler

上级 ca90834a
......@@ -103,4 +103,6 @@ public interface PostgreServerExtension
boolean supportsExplainPlanVerbose();
boolean supportsDatabaseDescription();
boolean supportsTemporalAccessor();
}
......@@ -16,8 +16,10 @@
*/
package org.jkiss.dbeaver.ext.postgresql.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.exec.DBCStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
......@@ -29,7 +31,7 @@ import java.sql.SQLException;
import java.sql.Types;
/**
* JDBC strict string value handler.
* PostgreDateTimeValueHandler.
*/
public class PostgreDateTimeValueHandler extends JDBCDateTimeValueHandler {
......@@ -38,6 +40,13 @@ public class PostgreDateTimeValueHandler extends JDBCDateTimeValueHandler {
super(formatterProfile);
}
@Override
public Object fetchValueObject(@NotNull DBCSession session, @NotNull DBCResultSet resultSet, @NotNull DBSTypedObject type, int index) throws DBCException {
Object value = super.fetchValueObject(session, resultSet, type, index);
//if (value instanceof )
return value;
}
@Override
public void bindValueObject(DBCSession session, DBCStatement statement, DBSTypedObject type, int index, Object value) throws DBCException {
if (value instanceof String) {
......@@ -51,4 +60,5 @@ public class PostgreDateTimeValueHandler extends JDBCDateTimeValueHandler {
}
super.bindValueObject(session, statement, type, index, value);
}
}
\ No newline at end of file
/*
* 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.ext.postgresql.model.data;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCTemporalAccessorValueHandler;
/**
* PostgreTemporalAccessorValueHandler.
*/
public class PostgreTemporalAccessorValueHandler extends JDBCTemporalAccessorValueHandler {
public PostgreTemporalAccessorValueHandler(DBDDataFormatterProfile formatterProfile) {
super(formatterProfile);
}
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.ext.postgresql.model.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.postgresql.PostgreConstants;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
......@@ -46,7 +47,11 @@ public class PostgreValueHandlerProvider implements DBDValueHandlerProvider {
case Types.TIME_WITH_TIMEZONE:
case Types.TIMESTAMP:
case Types.TIMESTAMP_WITH_TIMEZONE:
return new PostgreDateTimeValueHandler(preferences.getDataFormatterProfile());
if (((PostgreDataSource)dataSource).getServerType().supportsTemporalAccessor()) {
return new PostgreTemporalAccessorValueHandler(preferences.getDataFormatterProfile());
} else {
return new PostgreDateTimeValueHandler(preferences.getDataFormatterProfile());
}
default:
switch (typedObject.getTypeName()) {
case PostgreConstants.TYPE_JSONB:
......
......@@ -329,6 +329,14 @@ public abstract class PostgreServerExtensionBase implements PostgreServerExtensi
return dataSource.isServerVersionAtLeast(9, 4);
}
@Override
public boolean supportsTemporalAccessor() {
// Disable temporal accessor (which stands for java.util.Date).
// It doesn't make sense as PG server doesn't support timezones.
// Everything is in UTC.
return false;
}
public String createWithClause(PostgreTableRegular table, PostgreTableBase tableBase) {
StringBuilder withClauseBuilder = new StringBuilder();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册