[teiid-issues] [JBoss JIRA] (TEIID-5229) Google Spreadsheet translator NoSuchElementException for DELETE with criteria on char
Jan Stastny (JIRA)
issues at jboss.org
Thu Jan 25 09:15:00 EST 2018
[ https://issues.jboss.org/browse/TEIID-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13523830#comment-13523830 ]
Jan Stastny commented on TEIID-5229:
------------------------------------
[~shawkins] Here is the vdb:
{code}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="googlespreadsheetcrud" version="1">
<description>Google Spreadsheet for CRUD operations</description>
<model name="Source" type="PHYSICAL" visible="false">
<source name="Source" translator-name="google-spreadsheet" connection-jndi-name="java:/googlespreadsheet-crud" />
<metadata type="DDL">
<![CDATA[
CREATE FOREIGN TABLE smalla(
doublenum double OPTIONS (NATIVE_TYPE 'NUMBER'),
booleanvalue boolean OPTIONS (NATIVE_TYPE 'BOOLEAN'),
intnum integer OPTIONS (NATIVE_TYPE 'NUMBER'),
longnum long OPTIONS (NATIVE_TYPE 'NUMBER'),
floatnum float OPTIONS (NATIVE_TYPE 'NUMBER'),
bytenum byte OPTIONS (NATIVE_TYPE 'NUMBER'),
stringkey string(10) OPTIONS (NATIVE_TYPE 'STRING'),
objectvalue object OPTIONS (NATIVE_TYPE 'STRING'),
stringnum string(10) OPTIONS (NATIVE_TYPE 'STRING'),
bigintegervalue biginteger OPTIONS (NATIVE_TYPE 'NUMBER'),
datevalue date OPTIONS (NATIVE_TYPE 'DATE'),
charvalue string OPTIONS (NATIVE_TYPE 'STRING'),
timevalue time OPTIONS (NATIVE_TYPE 'TIMEOFDAY'),
bigdecimalvalue bigdecimal OPTIONS (NATIVE_TYPE 'NUMBER'),
timestampvalue timestamp OPTIONS (NATIVE_TYPE 'DATETIME'),
intkey integer OPTIONS (NATIVE_TYPE 'NUMBER'),
shortvalue short OPTIONS (NATIVE_TYPE 'NUMBER')
) OPTIONS (UPDATABLE 'TRUE', NAMEINSOURCE 'smalla_${label}');
]]>
</metadata>
</model>
<model name="CRUD" type="VIRTUAL">
<metadata type="DDL">
<![CDATA[
CREATE VIEW SmallA (IntKey integer PRIMARY KEY,
StringKey string,
IntNum integer,
StringNum string,
FloatNum float,
LongNum long,
DoubleNum double,
ByteNum byte,
DateValue date,
TimeValue time,
TimestampValue timestamp,
BooleanValue boolean,
CharValue char,
ShortValue short,
BigIntegerValue biginteger,
BigDecimalValue bigdecimal,
ObjectValue object)
OPTIONS (UPDATABLE 'TRUE')
AS
SELECT
intkey, stringkey, intnum, stringnum, floatnum, longnum, doublenum, bytenum, datevalue, timevalue, timestampvalue, booleanvalue, convert(charvalue, char), shortvalue, bigintegervalue, bigdecimalvalue, objectvalue
FROM
Source.smalla;
CREATE TRIGGER ON SmallA INSTEAD OF INSERT AS FOR EACH ROW
BEGIN ATOMIC
INSERT INTO Source.smalla (intkey, stringkey, intnum, stringnum, floatnum, longnum, doublenum, bytenum, datevalue, timevalue, timestampvalue, booleanvalue, charvalue, shortvalue, bigintegervalue, bigdecimalvalue, objectvalue) VALUES
(NEW.IntKey, NEW.StringKey, NEW.IntNum, NEW.StringNum, NEW.FloatNum, NEW.LongNum, NEW.DoubleNum, NEW.ByteNum, NEW.DateValue, NEW.TimeValue, NEW.TimestampValue,
NEW.BooleanValue, NEW.CharValue, NEW.ShortValue, NEW.BigIntegerValue, NEW.BigDecimalValue, convert(NEW.ObjectValue, string));
END;
CREATE TRIGGER ON SmallA INSTEAD OF UPDATE AS FOR EACH ROW
BEGIN ATOMIC
IF(CHANGING.ObjectValue)
BEGIN
UPDATE Source.smalla SET intkey = NEW.IntKey, stringkey = NEW.StringKey, intnum = NEW.IntNum, stringnum = NEW.StringNum, floatnum = NEW.FloatNum, longnum = NEW.LongNum, doublenum = NEW.DoubleNum, bytenum = NEW.ByteNum, datevalue = NEW.DateValue, timevalue = NEW.TimeValue, timestampvalue = NEW.TimestampValue, booleanvalue = NEW.BooleanValue, charvalue = convert(NEW.CharValue, char), shortvalue = NEW.ShortValue, bigintegervalue = NEW.BigIntegerValue, bigdecimalvalue = NEW.BigDecimalValue, objectvalue = convert(NEW.ObjectValue, string)
WHERE intkey = OLD.IntKey;
END ELSE
BEGIN
UPDATE Source.smalla SET intkey = NEW.IntKey, stringkey = NEW.StringKey, intnum = NEW.IntNum, stringnum = NEW.StringNum, floatnum = NEW.FloatNum, longnum = NEW.LongNum, doublenum = NEW.DoubleNum, bytenum = NEW.ByteNum, datevalue = NEW.DateValue, timevalue = NEW.TimeValue, timestampvalue = NEW.TimestampValue, booleanvalue = NEW.BooleanValue, charvalue = convert(NEW.CharValue, char), shortvalue = convert(NEW.ShortValue, short), bigintegervalue = NEW.BigIntegerValue, bigdecimalvalue = NEW.BigDecimalValue, objectvalue = NEW.ObjectValue
WHERE intkey = OLD.IntKey;
END
END;
]]>
</metadata>
</model>
</vdb>
{code}
> Google Spreadsheet translator NoSuchElementException for DELETE with criteria on char
> -------------------------------------------------------------------------------------
>
> Key: TEIID-5229
> URL: https://issues.jboss.org/browse/TEIID-5229
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Jan Stastny
> Assignee: Steven Hawkins
>
> DELETE fails when there's WHERE criteria on a column with type char.
> {code:sql}
> DELETE FROM SmallA WHERE CharValue IN ('2', '3')
> {code}
> Error:
> {code}
> 14:04:41,627 ERROR [org.teiid.PROCESSOR] (Worker6_QueryProcessorQueue60) TEIID30019 Unexpected exception for request Bc4xXOpFO/lu.32: java.util.NoSuchElementException
> at java.util.ArrayList$Itr.next(ArrayList.java:860) [rt.jar:1.8.0_151]
> at org.teiid.query.rewriter.QueryRewriter.createPkCriteria(QueryRewriter.java:3104) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.createDeleteProcedure(QueryRewriter.java:3238) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.rewriteInherentDelete(QueryRewriter.java:3177) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.rewriteDelete(QueryRewriter.java:3130) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.rewriteCommand(QueryRewriter.java:238) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.rewrite(QueryRewriter.java:168) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.query.rewriter.QueryRewriter.rewrite(QueryRewriter.java:172) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:426) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.Request.processRequest(Request.java:476) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:642) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:337) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:274) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210) [teiid-engine-8.12.11.6_4-redhat-64-11.jar:8.12.11.6_4-redhat-64-11]
> 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]
> {code}
> UPDATE works as expected.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the teiid-issues
mailing list