[JBoss JIRA] (TEIID-5097) Cannot run time-based queries against Osisoft PI
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5097?page=com.atlassian.jira.plugin... ]
Work on TEIID-5097 started by Steven Hawkins.
---------------------------------------------
> Cannot run time-based queries against Osisoft PI
> ------------------------------------------------
>
> Key: TEIID-5097
> URL: https://issues.jboss.org/browse/TEIID-5097
> Project: Teiid
> Issue Type: Quality Risk
> Components: JDBC Connector
> Affects Versions: 8.12.x-6.4
> Reporter: Andrej Šmigala
> Assignee: Steven Hawkins
> Fix For: 10.1
>
>
> Osisoft PI supports a relative time literals syntax, e.g.
> {code:sql}
> select * from dvqe.Data.Archive a where a.time between '*-14d' and '*'
> {code}
> will select all data between right now and 14 days ago, and
> {code:sql}
> select * from dvqe.Data.Archive a where a.time > 'y'
> {code}
> will select all data after yesterday midnight.
> The string literals are converted to time values in the PI Server
> Running the same queries through teiid however returns incorrect results, because teiid pushes a cast to string on the Time column, which results in string comparison on the datasource:
> {code:sql|title=Pushed query}
> SELECT TOP 100 cast(g_0.[ElementAttributeID] as String), g_0.[Time] AS c_1, g_0.[Value] AS c_2, g_0.[ValueInt] AS c_3, g_0.
> [ValueDbl] AS c_4, g_0.[ValueStr] AS c_5, cast(g_0.[ValueGuid] as String), g_0.[ValueDateTime] AS c_7, g_0.[Status] AS c_8, g_0.[Annotated] AS c_9, g_0.[IsGood] A
> S c_10, g_0.[Questionable] AS c_11, g_0.[Substituted] AS c_12 FROM [dvqe].[Data].[Archive] AS g_0 WHERE cast(g_0.[Time] AS String) > 'y'
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5097) Cannot run time-based queries against Osisoft PI
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5097?page=com.atlassian.jira.plugin... ]
Steven Hawkins reassigned TEIID-5097:
-------------------------------------
Assignee: Steven Hawkins
I'm going to add the function described in the last comment as a pushdown function and update the docs with respect to its usage.
> Cannot run time-based queries against Osisoft PI
> ------------------------------------------------
>
> Key: TEIID-5097
> URL: https://issues.jboss.org/browse/TEIID-5097
> Project: Teiid
> Issue Type: Quality Risk
> Components: JDBC Connector
> Affects Versions: 8.12.x-6.4
> Reporter: Andrej Šmigala
> Assignee: Steven Hawkins
> Fix For: 10.1
>
>
> Osisoft PI supports a relative time literals syntax, e.g.
> {code:sql}
> select * from dvqe.Data.Archive a where a.time between '*-14d' and '*'
> {code}
> will select all data between right now and 14 days ago, and
> {code:sql}
> select * from dvqe.Data.Archive a where a.time > 'y'
> {code}
> will select all data after yesterday midnight.
> The string literals are converted to time values in the PI Server
> Running the same queries through teiid however returns incorrect results, because teiid pushes a cast to string on the Time column, which results in string comparison on the datasource:
> {code:sql|title=Pushed query}
> SELECT TOP 100 cast(g_0.[ElementAttributeID] as String), g_0.[Time] AS c_1, g_0.[Value] AS c_2, g_0.[ValueInt] AS c_3, g_0.
> [ValueDbl] AS c_4, g_0.[ValueStr] AS c_5, cast(g_0.[ValueGuid] as String), g_0.[ValueDateTime] AS c_7, g_0.[Status] AS c_8, g_0.[Annotated] AS c_9, g_0.[IsGood] A
> S c_10, g_0.[Questionable] AS c_11, g_0.[Substituted] AS c_12 FROM [dvqe].[Data].[Archive] AS g_0 WHERE cast(g_0.[Time] AS String) > 'y'
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5119) Osisoft Translator - Teiid pushes cast from Timestamp to Time
by RH Bugzilla Integration (JIRA)
[ https://issues.jboss.org/browse/TEIID-5119?page=com.atlassian.jira.plugin... ]
RH Bugzilla Integration commented on TEIID-5119:
------------------------------------------------
Andrej Smigala <asmigala(a)redhat.com> changed the Status of [bug 1505834|https://bugzilla.redhat.com/show_bug.cgi?id=1505834] from ON_QA to VERIFIED
> Osisoft Translator - Teiid pushes cast from Timestamp to Time
> -------------------------------------------------------------
>
> Key: TEIID-5119
> URL: https://issues.jboss.org/browse/TEIID-5119
> 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, 8.12.x-6.4
>
>
> Osisoft PI does not support conversion from Timestamp to Time, however, query such as
> {code:sql}
> select cast(timestampvalue as time) from source.smalla
> {code}
> is pushed as
> {code:sql}
> SELECT cast(g_0.TimestampValue AS Time) FROM dvqe..SmallA AS g_0
> {code}
> which results in the following stack trace:
> {noformat}
> (Worker4_QueryProcessorQueue25) Connector worker process failed for atomic-request=mrbob+Ekp30a.0.0.13: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11008:TEIID11004 Error executing statement(s): [SQL: SELECT cast(g_0.TimestampValue AS Time) FROM dvqe..SmallA AS g_0]
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:131) [translator-jdbc-8.12.11.6_4.jar:8.12.11.6_4]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_141]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_141]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_141]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_141]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy79.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
> at org.teiid.dqp.internal.process.DataTierTupleSource.nextTuple(DataTierTupleSource.java:142)
> at org.teiid.query.processor.relational.AccessNode.nextBatchDirect(AccessNode.java:391)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:281)
> at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)
> at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:472)
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:348)
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:274)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:280)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_141]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_141]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141]
> Caused by: java.sql.SQLException: [PIOLEDBENT] [SQL Analyzer] [Line 1:6] Cannot cast 'DateTime' to 'Time'.
> at com.osisoft.jdbc.StatementImpl.executeQuery(StatementImpl.java:360)
> at org.jboss.jca.adapters.jdbc.WrappedStatement.executeQuery(WrappedStatement.java:344)
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:119) [translator-jdbc-8.12.11.6_4.jar:8.12.11.6_4]
> ... 26 more
> Caused by: com.osisoft.rdsa.RdsaException: [PIOLEDBENT] [SQL Analyzer] [Line 1:6] Cannot cast 'DateTime' to 'Time'.
> at com.osisoft.rdsa.Command.ExecuteReader(Native Method)
> at com.osisoft.rdsa.Command.executeReader(Command.java:79)
> at com.osisoft.jdbc.StatementImpl.executeQuery(StatementImpl.java:356)
> ... 28 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5213) Required Restful to be able to set/update CLOB value.
by xu zhang (JIRA)
[ https://issues.jboss.org/browse/TEIID-5213?page=com.atlassian.jira.plugin... ]
xu zhang updated TEIID-5213:
----------------------------
Description:
In a table of MySql, if a column's type is *TEXT*, it is impossible to set/update this column.
The code like:
{code}
public void doTest() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
URI uri = new URI("http://localhost:8080/odata4/Test/test/");
String realm = "yourdomain.com";
String user = "teiidUser";
String pass = "Redhat!23";
// Add authentication credentials
AuthenticationStore auth = httpClient.getAuthenticationStore();
auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
System.out.println(response.getContentAsString());
response = httpClient.GET(uri.toString() + "test_tbl");
System.out.println(response.getContentAsString());
String jsonPayload =
"{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
response = httpClient.newRequest(uri.toString() + "test_tbl")
.method("POST")
.content(new StringContentProvider(jsonPayload))
.header("Content-Type", "application/json")
.header("Prefer", "return=representation")
.send();
System.out.println(response.getContentAsString());
response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
.method("PUT")
.content(new StringContentProvider("this is clob test 2"))
.send();
System.out.println(response.getContentAsString());
}
{code}
Error shows:
{code}
11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy82.execute(Unknown Source)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
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) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 20 more
Caused by: java.io.IOException: JBWEB000059: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 28 more
{code}
was:
In a table of MySql, if a column's type is *TEXT*, it is impossible to set/update this column.
The code like:
~~~
public void doTest() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
URI uri = new URI("http://localhost:8080/odata4/Test/test/");
String realm = "yourdomain.com";
String user = "teiidUser";
String pass = "Redhat!23";
// Add authentication credentials
AuthenticationStore auth = httpClient.getAuthenticationStore();
auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
System.out.println(response.getContentAsString());
response = httpClient.GET(uri.toString() + "test_tbl");
System.out.println(response.getContentAsString());
String jsonPayload =
"{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
response = httpClient.newRequest(uri.toString() + "test_tbl")
.method("POST")
.content(new StringContentProvider(jsonPayload))
.header("Content-Type", "application/json")
.header("Prefer", "return=representation")
.send();
System.out.println(response.getContentAsString());
response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
.method("PUT")
.content(new StringContentProvider("this is clob test 2"))
.send();
System.out.println(response.getContentAsString());
}
~~~
Error shows:
~~~
11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy82.execute(Unknown Source)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
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) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 20 more
Caused by: java.io.IOException: JBWEB000059: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 28 more
~~~
> Required Restful to be able to set/update CLOB value.
> -----------------------------------------------------
>
> Key: TEIID-5213
> URL: https://issues.jboss.org/browse/TEIID-5213
> Project: Teiid
> Issue Type: Enhancement
> Components: OData
> Affects Versions: 8.12
> Environment: JDV 6.3.8
> Reporter: xu zhang
> Assignee: Steven Hawkins
>
> In a table of MySql, if a column's type is *TEXT*, it is impossible to set/update this column.
> The code like:
> {code}
> public void doTest() throws Exception {
> HttpClient httpClient = new HttpClient();
> httpClient.start();
> URI uri = new URI("http://localhost:8080/odata4/Test/test/");
> String realm = "yourdomain.com";
> String user = "teiidUser";
> String pass = "Redhat!23";
> // Add authentication credentials
> AuthenticationStore auth = httpClient.getAuthenticationStore();
> auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
> ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
> System.out.println(response.getContentAsString());
> response = httpClient.GET(uri.toString() + "test_tbl");
> System.out.println(response.getContentAsString());
>
> String jsonPayload =
> "{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
> response = httpClient.newRequest(uri.toString() + "test_tbl")
> .method("POST")
> .content(new StringContentProvider(jsonPayload))
> .header("Content-Type", "application/json")
> .header("Prefer", "return=representation")
> .send();
> System.out.println(response.getContentAsString());
> response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
> .method("PUT")
> .content(new StringContentProvider("this is clob test 2"))
> .send();
> System.out.println(response.getContentAsString());
>
> }
> {code}
> Error shows:
> {code}
> 11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy82.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
> 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) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
> Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
> at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
> at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
> at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
> at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
> at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> ... 20 more
> Caused by: java.io.IOException: JBWEB000059: Stream closed
> at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
> at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
> at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
> at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> ... 28 more
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5213) Required Restful to be able to set/update CLOB value.
by xu zhang (JIRA)
[ https://issues.jboss.org/browse/TEIID-5213?page=com.atlassian.jira.plugin... ]
xu zhang updated TEIID-5213:
----------------------------
Description:
In a table of MySql, if a column's type is *TEXT*, it is impossible to use restful way to set/update this column.
The code like:
{code}
public void doTest() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
URI uri = new URI("http://localhost:8080/odata4/Test/test/");
String realm = "yourdomain.com";
String user = "teiidUser";
String pass = "Redhat!23";
// Add authentication credentials
AuthenticationStore auth = httpClient.getAuthenticationStore();
auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
System.out.println(response.getContentAsString());
response = httpClient.GET(uri.toString() + "test_tbl");
System.out.println(response.getContentAsString());
String jsonPayload =
"{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
response = httpClient.newRequest(uri.toString() + "test_tbl")
.method("POST")
.content(new StringContentProvider(jsonPayload))
.header("Content-Type", "application/json")
.header("Prefer", "return=representation")
.send();
System.out.println(response.getContentAsString());
response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
.method("PUT")
.content(new StringContentProvider("this is clob test 2"))
.send();
System.out.println(response.getContentAsString());
}
{code}
Error shows:
{code}
11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy82.execute(Unknown Source)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
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) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 20 more
Caused by: java.io.IOException: JBWEB000059: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 28 more
{code}
was:
In a table of MySql, if a column's type is *TEXT*, it is impossible to set/update this column.
The code like:
{code}
public void doTest() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
URI uri = new URI("http://localhost:8080/odata4/Test/test/");
String realm = "yourdomain.com";
String user = "teiidUser";
String pass = "Redhat!23";
// Add authentication credentials
AuthenticationStore auth = httpClient.getAuthenticationStore();
auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
System.out.println(response.getContentAsString());
response = httpClient.GET(uri.toString() + "test_tbl");
System.out.println(response.getContentAsString());
String jsonPayload =
"{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
response = httpClient.newRequest(uri.toString() + "test_tbl")
.method("POST")
.content(new StringContentProvider(jsonPayload))
.header("Content-Type", "application/json")
.header("Prefer", "return=representation")
.send();
System.out.println(response.getContentAsString());
response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
.method("PUT")
.content(new StringContentProvider("this is clob test 2"))
.send();
System.out.println(response.getContentAsString());
}
{code}
Error shows:
{code}
11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy82.execute(Unknown Source)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
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) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 20 more
Caused by: java.io.IOException: JBWEB000059: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 28 more
{code}
> Required Restful to be able to set/update CLOB value.
> -----------------------------------------------------
>
> Key: TEIID-5213
> URL: https://issues.jboss.org/browse/TEIID-5213
> Project: Teiid
> Issue Type: Enhancement
> Components: OData
> Affects Versions: 8.12
> Environment: JDV 6.3.8
> Reporter: xu zhang
> Assignee: Steven Hawkins
>
> In a table of MySql, if a column's type is *TEXT*, it is impossible to use restful way to set/update this column.
> The code like:
> {code}
> public void doTest() throws Exception {
> HttpClient httpClient = new HttpClient();
> httpClient.start();
> URI uri = new URI("http://localhost:8080/odata4/Test/test/");
> String realm = "yourdomain.com";
> String user = "teiidUser";
> String pass = "Redhat!23";
> // Add authentication credentials
> AuthenticationStore auth = httpClient.getAuthenticationStore();
> auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
> ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
> System.out.println(response.getContentAsString());
> response = httpClient.GET(uri.toString() + "test_tbl");
> System.out.println(response.getContentAsString());
>
> String jsonPayload =
> "{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
> response = httpClient.newRequest(uri.toString() + "test_tbl")
> .method("POST")
> .content(new StringContentProvider(jsonPayload))
> .header("Content-Type", "application/json")
> .header("Prefer", "return=representation")
> .send();
> System.out.println(response.getContentAsString());
> response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
> .method("PUT")
> .content(new StringContentProvider("this is clob test 2"))
> .send();
> System.out.println(response.getContentAsString());
>
> }
> {code}
> Error shows:
> {code}
> 11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy82.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
> 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) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
> Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
> at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
> at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
> at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
> at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
> at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> ... 20 more
> Caused by: java.io.IOException: JBWEB000059: Stream closed
> at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
> at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
> at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
> at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
> ... 28 more
> {code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5213) Required Restful to be able to set/update CLOB value.
by xu zhang (JIRA)
xu zhang created TEIID-5213:
-------------------------------
Summary: Required Restful to be able to set/update CLOB value.
Key: TEIID-5213
URL: https://issues.jboss.org/browse/TEIID-5213
Project: Teiid
Issue Type: Enhancement
Components: OData
Affects Versions: 8.12
Environment: JDV 6.3.8
Reporter: xu zhang
Assignee: Steven Hawkins
In a table of MySql, if a column's type is *TEXT*, it is impossible to set/update this column.
The code like:
~~~
public void doTest() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
URI uri = new URI("http://localhost:8080/odata4/Test/test/");
String realm = "yourdomain.com";
String user = "teiidUser";
String pass = "Redhat!23";
// Add authentication credentials
AuthenticationStore auth = httpClient.getAuthenticationStore();
auth.addAuthentication(new BasicAuthentication(uri, realm, user, pass));
ContentResponse response = httpClient.GET(uri.toString() + "$metadata");
System.out.println(response.getContentAsString());
response = httpClient.GET(uri.toString() + "test_tbl");
System.out.println(response.getContentAsString());
String jsonPayload =
"{\"title\":\"title 2\",\"author\":\"author 2\", \"price\":567890.01, \"submission_date\":\"2018-01-05\"}";
response = httpClient.newRequest(uri.toString() + "test_tbl")
.method("POST")
.content(new StringContentProvider(jsonPayload))
.header("Content-Type", "application/json")
.header("Prefer", "return=representation")
.send();
System.out.println(response.getContentAsString());
response = httpClient.newRequest(uri.toString() + "test_tbl(2)/memo")
.method("PUT")
.content(new StringContentProvider("this is clob test 2"))
.send();
System.out.println(response.getContentAsString());
}
~~~
Error shows:
~~~
11:19:06,442 WARN [org.teiid.CONNECTOR] (Worker0_QueryProcessorQueue2) Connector worker process failed for atomic-request=zlEfhij2vSNv.0.0.2: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: ['org.teiid.core.types.ClobImpl@6a52c49c'] SQL: UPDATE "test_tbl" SET "memo" = ? WHERE "test_tbl"."id" = 2]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:293) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:84) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:401)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy82.execute(Unknown Source)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
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) [rt.jar:1.8.0_151]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
Caused by: java.sql.SQLException: java.io.IOException: JBWEB000059: Stream closed
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:171) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobType.getSubString(ClobType.java:77) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at com.mysql.jdbc.PreparedStatement.setClob(PreparedStatement.java:3529)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4098)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3981)
at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:957)
at org.teiid.translator.jdbc.JDBCExecutionFactory.bindValue(JDBCExecutionFactory.java:965) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCBaseExecution.bind(JDBCBaseExecution.java:107) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:262) [translator-jdbc-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 20 more
Caused by: java.io.IOException: JBWEB000059: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:391)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) [rt.jar:1.8.0_151]
at org.teiid.core.util.InputStreamReader.read(InputStreamReader.java:80) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:159) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.util.ObjectConverterUtil.convertToCharArray(ObjectConverterUtil.java:316) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
at org.teiid.core.types.ClobImpl.getSubString(ClobImpl.java:166) [teiid-common-core-8.12.13.6_3-redhat-1.jar:8.12.13.6_3-redhat-1]
... 28 more
~~~
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months
[JBoss JIRA] (TEIID-5212) Additional optimization of left outer joins
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5212?page=com.atlassian.jira.plugin... ]
Work on TEIID-5212 started by Steven Hawkins.
---------------------------------------------
> Additional optimization of left outer joins
> -------------------------------------------
>
> Key: TEIID-5212
> URL: https://issues.jboss.org/browse/TEIID-5212
> Project: Teiid
> Issue Type: Quality Risk
> Components: Query Engine
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
>
> Related to TEIID-5016 and TEIID-3652, there are additional circumstances where the join planning logic can combine tables from different parts of a join tree involving left outer joins.
> The referenced forum posting has a star join against ora_ses such that moving the placement of the nested inner join allows for more grouping of the join tables.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years, 2 months