[teiid-issues] [JBoss JIRA] (TEIID-5216) JBOSS - Teiid 9.2.1 unable to return DateTimeOffset ODatatype values

Steven Hawkins (JIRA) issues at jboss.org
Wed Jan 17 11:49:00 EST 2018


    [ https://issues.jboss.org/browse/TEIID-5216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13520305#comment-13520305 ] 

Steven Hawkins commented on TEIID-5216:
---------------------------------------

[~pushkar_kamra] how is the metadata for this source being defined?  After some minor changes to get past the foreign key issue, the automatic import gives me:

{code}
CREATE FOREIGN TABLE Employees (
	EmployeeID integer NOT NULL OPTIONS (NATIVE_TYPE 'Edm.Int32'),
	LastName string(20) NOT NULL,
	FirstName string(10) NOT NULL,
	Title string(30),
	TitleOfCourtesy string(25),
	BirthDate timestamp OPTIONS (NATIVE_TYPE 'Edm.DateTimeOffset'),
	HireDate timestamp OPTIONS (NATIVE_TYPE 'Edm.DateTimeOffset'),
	Address string(60),
	City string(15),
	Region string(15),
	PostalCode string(10),
	Country string(15),
	HomePhone string(24),
	Extension string(4),
	Photo varbinary(2147483647) OPTIONS (NATIVE_TYPE 'Edm.Binary'),
	Notes string(2147483647),
	ReportsTo integer OPTIONS (NATIVE_TYPE 'Edm.Int32'),
	PhotoPath string(255),
	PRIMARY KEY(EmployeeID)
) OPTIONS (UPDATABLE TRUE, "teiid_odata:NameInSchema" 'NorthwindModel.Employee', "teiid_odata:Type" 'ENTITY_COLLECTION');
{code}

Thus the NATIVE_TYPEs have the expected "Edm." prefix.

> JBOSS - Teiid 9.2.1 unable to return DateTimeOffset ODatatype values
> --------------------------------------------------------------------
>
>                 Key: TEIID-5216
>                 URL: https://issues.jboss.org/browse/TEIID-5216
>             Project: Teiid
>          Issue Type: Bug
>          Components: OData
>    Affects Versions: 9.2.1
>         Environment: All
>            Reporter: Pushkar Kamra
>            Assignee: Steven Hawkins
>             Fix For: 10.1
>
>         Attachments: screenshot-1.png
>
>
> During the time of requesting ODatatype - DateTimeOffset from the from the following service - http://services.odata.org/V4/Northwind/Northwind.svc/
> Query - Select * from Employees.
> Using the above query it is unable to return DateTimeOffset  values for it and returns the 
> following error - 
> java.lang.IllegalArgumentException: No enum constant org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind.TimeOffset
>         at java.lang.Enum.valueOf(Enum.java:238)
>         at org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind.valueOf(EdmPrimitiveTypeKind.java:24)
>         at org.teiid.olingo.common.ODataTypeManager.parseLiteral(ODataTypeManager.java:332)
>         at org.teiid.olingo.common.ODataTypeManager.convertToTeiidRuntimeType(ODataTypeManager.java:184)
>         at org.teiid.translator.odata4.BaseQueryExecution.buildRow(BaseQueryExecution.java:244)
>         at org.teiid.translator.odata4.ODataQueryExecution.next(ODataQueryExecution.java:122)
>         at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:435)
>         at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:238)
>         at sun.reflect.GeneratedMethodAccessor480.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:220)
>         at com.sun.proxy.$Proxy398.more(Unknown Source)
>         at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:309)
>         at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
>         at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:282)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> From the initial level analysis and observation is has been observed teiid class - ODataTypeManager in that parselitreals method where ODatatype.Substring(4) is done which is causing the issue which is changing DateTimeOffset to TimeOffset and when it tries to find the Enum constant from the EdmPrimitiveTypeKind list it is unable find the changed name and this seems to be causing the issue in accessing the DateTimeOffset type datas from the containing tables. 



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the teiid-issues mailing list