[teiid-issues] [JBoss JIRA] (TEIID-2851) ODATA POST fails if table column is of IDENTITY type (sql server)

Alex Khvatov (JIRA) issues at jboss.org
Wed Feb 12 17:17:28 EST 2014


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

Alex Khvatov commented on TEIID-2851:
-------------------------------------

Hi Ramesh, 
here is test case:

1.  Started out on SQL SERVER 2008
{noformat}
CREATE TABLE [dbo].[Z1_MOB_SPEECH_LOG_D](
	[SPEECH_LOG_SURRO_ID] [int] IDENTITY(1,1) NOT NULL,
	[SPEECH_TS] [datetime] NULL,
	[SPEECH_TYP_DESC] [varchar](100) NULL,
	[ACTL_SPEECH_TXT] [varchar](2000) NULL,
	[CLEAN_SPEECH_TXT] [varchar](2000) NULL,
	[ONE_CLIENT_ID] [int] NULL,
	[IMS_PORTAL_USR_ID] [varchar](20) NULL,
	[ROW_CRE_TS] [datetime] NOT NULL,
	[ROW_CRE_LOGIN_ID] [varchar](30) NOT NULL,
 CONSTRAINT [Z1_XPKMOB_SPEECH_LOG_D] PRIMARY KEY CLUSTERED 
(
	[SPEECH_LOG_SURRO_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
{noformat}

2.  In TEIID, "Create JDBC Data Connection"

	created a JDBC connection using "Microsoft SQL Server 2008 JDBC Driver"

3.  In TEIID, "Create Source Model for JDBC Data Connection"

	created a source model using wizard to import table design to the source model

4.  In TEIID, New "TEIID Metadata Model"

	created a view model using wizard to create a base table off the source model table
	added a primary key on column SPEECH_LOG_SURRO_ID

5.  In TEIID, New "TEIID VDB"

	created new TEIID VDB, adding the source model and view model above
	deployed VDB to localhost running TEIID/JBOSS EAP

6.  Using a REST-Client (SOAP UI)
	
	issued an HTTP POST:	 http://localhost:8080/odata/vdbTest/vw_test_log.Z3_MOB_SPEECH_LOG_D_I
	...using this data row:
{noformat}
	{"SPEECH_TS": "2014-02-10T15:00:33.001","SPEECH_TYP_DESC": "type","ACTL_SPEECH_TXT": "desc","CLEAN_SPEECH_TXT": "clean","ONE_CLIENT_ID": "1","IMS_PORTAL_USR_ID": "(97854)(1)","ROW_CRE_TS": "2014-02-10T15:00:33.002","ROW_CRE_LOGIN_ID": "cw"}
{noformat}
	ERROR:
{noformat}
	09:49:24,010 ERROR [org.teiid.ODATA] (http-localhost/127.0.0.1:8080-5) null TEIID16013 Error occured producing OData result.: java.lang.RuntimeException: No elements match the predicate
{noformat}

****PLEASE NOTE:  I can successfully add data through a straight JDBC Connection using this VDB (Insert into...).  
	Only in an ODATA Call does it fail.

	Also note, if I remove the IDENTITY clause in the SQL Server table, and issue an actual value for the primary key in the data string, the ODATA call works fine.
                
> ODATA POST fails if table column is of IDENTITY type (sql server)
> -----------------------------------------------------------------
>
>                 Key: TEIID-2851
>                 URL: https://issues.jboss.org/browse/TEIID-2851
>             Project: Teiid
>          Issue Type: Bug
>          Components: OData
>    Affects Versions: 8.6
>            Reporter: Alex Khvatov
>            Assignee: Ramesh Reddy
>
> While INSERT into virtual table created from a table that has IDENTITY (autoincrement) feild (in sql server) works if inserted via JDBC, POST to the same table using ODATA fails. 
> I am attaching the stack trace we get.
> 09:49:24,010 ERROR [org.teiid.ODATA] (http-localhost/127.0.0.1:8080-5) null TEIID16013 Error occured producing OData result.: java.lang.RuntimeException: No elements match the predicate
>             at org.core4j.Enumerable.first(Enumerable.java:125) [core4j-0.5.jar:]
>             at org.odata4j.core.OEntities$OEntityImpl.getProperty(OEntities.java:219) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
>             at org.teiid.odata.ODataSQLBuilder.buildEntityKey(ODataSQLBuilder.java:1005) [classes:]
>             at org.teiid.odata.TeiidProducer.createEntity(TeiidProducer.java:172) [classes:]
>             at org.odata4j.producer.resources.EntitiesRequestResource.createEntity(EntitiesRequestResource.java:124) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
>             at org.odata4j.producer.resources.EntitiesRequestResource.createEntity(EntitiesRequestResource.java:111) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
>             at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source) [:1.7.0_17]
>             at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17]
>             at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17]
>             at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at org.teiid.odata.ODataServletContainerDispatcher.service(ODataServletContainerDispatcher.java:97) [classes:]
>             at org.teiid.odata.ODataServlet.service(ODataServlet.java:61) [classes:]
>             at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
>             at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
>             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>             at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>             at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_17]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the teiid-issues mailing list