[teiid-issues] [JBoss JIRA] (TEIID-5116) Osisoft Translator - NULL values in numeric columns returned as zeroes
Ramesh Reddy (JIRA)
issues at jboss.org
Tue Oct 24 16:40:00 EDT 2017
[ https://issues.jboss.org/browse/TEIID-5116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ramesh Reddy resolved TEIID-5116.
---------------------------------
Resolution: Done
Labels: CR2 (was: )
> Osisoft Translator - NULL values in numeric columns returned as zeroes
> ----------------------------------------------------------------------
>
> Key: TEIID-5116
> URL: https://issues.jboss.org/browse/TEIID-5116
> Project: Teiid
> Issue Type: Bug
> Components: JDBC Connector
> Affects Versions: 8.12.x-6.4
> Reporter: Andrej Šmigala
> Assignee: Ramesh Reddy
> Priority: Critical
> Labels: CR2
> Fix For: 10.0
>
>
> NULL values in columns with a numeric type (all of int8, int16 etc, single, double) are returned as 0.
> This is due to a bug/quirk of the Osisoft PI JDBC driver, which is hard-coded to return false from the wasNull method.
> On the Teiid side, the code in JDBCExecutionFactory.retrieveValue() assumes (completely reasonably) that the wasNull method is implemented correctly:
> {code:java}
> case DataTypeManager.DefaultTypeCodes.INTEGER: {
> int value = results.getInt(columnIndex);
> if(results.wasNull()) {
> return null;
> }
> return Integer.valueOf(value);
> }
> {code}
> I managed to workaround the bug in the PI JDBC driver by overriding the retrieveValue() in PIExecutionFactory and replacing the calls to wasNull like this:
> {code:java}
> case DataTypeManager.DefaultTypeCodes.INTEGER: {
> int value = results.getInt(columnIndex);
> if (results.getObject(columnIndex) == null) {
> return null;
> }
> return Integer.valueOf(value);
> }
> {code}
> but that probably isn't the best solution.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the teiid-issues
mailing list