[teiid-issues] [JBoss JIRA] (TEIID-5068) Couchbase cast to biginteger causes ClassCastException
Jan Stastny (JIRA)
issues at jboss.org
Tue Sep 19 08:38:00 EDT 2017
[ https://issues.jboss.org/browse/TEIID-5068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13465623#comment-13465623 ]
Jan Stastny commented on TEIID-5068:
------------------------------------
Hello [~shawkins],
I checked the fix for biginteger and bigdecimal, the issue is resolved.
Similar issue applies to usecase, where I have string column modelled in the Source model and casting to object in my view. When I query the source model, the query succeeds, if I query the view, ClassCastException is thrown.
{code:title=server.log}
13:52:57,847 ERROR [org.teiid.CONNECTOR] (Worker8_QueryProcessorQueue68) Connector worker process failed for atomic-request=fjw5yqu4Lfap.8.0.11: java.lang.ClassCastException: java.lang.String cannot be cast to com.couchbase.client.java.document.json.JsonObject
at com.couchbase.client.java.document.json.JsonObject.getObject(JsonObject.java:380) [java-client-2.4.2.jar:]
at org.teiid.translator.couchbase.CouchbaseQueryExecution.next(CouchbaseQueryExecution.java:114) [translator-couchbase-8.12.11.6_4.jar:8.12.11.6_4]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:433)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_121]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy79.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) [rt.jar:1.8.0_121]
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
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:1142) [rt.jar:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
13:52:57,855 WARN [org.teiid.PROCESSOR] (Worker6_QueryProcessorQueue69) TEIID30020 Processing exception for request fjw5yqu4Lfap.8 'TEIID30504 couchbase_small: java.lang.String cannot be cast to com.couchbase.client.java.document.json.JsonObject'. Originally TeiidProcessingException JsonObject.java:380. Enable more detailed logging to see the entire stacktrace.
{code}
This is a command log entry for the query against View:
{code:title=source cmd for failing query}
SELECT TOATOM(`$cb_c1_ObjectValue`) c_0 FROM `dvqe_small` `$cb_t1` LET `$cb_c1_ObjectValue` = `$cb_t1`.`ObjectValue` WHERE `$cb_t1`.`type` = 'SmallA' LIMIT 100
{code}
The query itself succeeds on couchbase side when run in its cli.
There is a source command for the query against source model directly:
{code:title=source cmd for successful query}
SELECT `$cb_c1_ObjectValue` c_0 FROM `dvqe_small` `$cb_t1` LET `$cb_c1_ObjectValue` = `$cb_t1`.`ObjectValue` WHERE `$cb_t1`.`type` = 'SmallA' LIMIT 100
{code}
> Couchbase cast to biginteger causes ClassCastException
> ------------------------------------------------------
>
> Key: TEIID-5068
> URL: https://issues.jboss.org/browse/TEIID-5068
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Jan Stastny
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 10.0, 8.12.x-6.4, 9.3.4
>
>
> There seems to be issue with casting to biginteger datatype.
> It applies to both cases:
> # Model column as integer in Source model, CAST to biginteger in a View
> # Model column as biginteger in Source model
> In both cases a ClassCastException is thrown.
> Here I provide the artifacts first case:
> {code:xml|title=vdb}
> <vdb name="couchbase" version="1">
> <model name="Couchbase_small" type="PHYSICAL" visible="true">
> <source name="couchbase_small" connection-jndi-name="java:/couchbase_small" translator-name="couchbase"/>
> <metadata type="DDL">
> SET NAMESPACE 'http://www.teiid.org/translator/couchbase/2017' AS teiid_couchbase;
> CREATE FOREIGN TABLE SmallA (
> documentID string,
> FloatNum integer OPTIONS (NAMEINSOURCE '`FloatNum`'),
> IntKey integer PRIMARY KEY OPTIONS (NAMEINSOURCE '`IntKey`'),
> BigIntegerValue integer OPTIONS (NAMEINSOURCE '`BigIntegerValue`'),
> StringKey string OPTIONS (NAMEINSOURCE '`StringKey`'),
> CharValue string OPTIONS (NAMEINSOURCE '`CharValue`'),
> LongNum integer OPTIONS (NAMEINSOURCE '`LongNum`'),
> type string OPTIONS (NAMEINSOURCE '`type`'),
> DoubleNum integer OPTIONS (NAMEINSOURCE '`DoubleNum`'),
> ObjectValue string OPTIONS (NAMEINSOURCE '`ObjectValue`'),
> ShortValue integer OPTIONS (NAMEINSOURCE '`ShortValue`'),
> BigDecimalValue integer OPTIONS (NAMEINSOURCE '`BigDecimalValue`'),
> DateValue string OPTIONS (NAMEINSOURCE '`DateValue`'),
> BooleanValue boolean OPTIONS (NAMEINSOURCE '`BooleanValue`'),
> TimestampValue string OPTIONS (NAMEINSOURCE '`TimestampValue`'),
> ByteNum integer OPTIONS (NAMEINSOURCE '`ByteNum`'),
> StringNum string OPTIONS (NAMEINSOURCE '`StringNum`'),
> TimeValue string OPTIONS (NAMEINSOURCE '`TimeValue`'),
> IntNum integer OPTIONS (NAMEINSOURCE '`IntNum`')
> ) OPTIONS (NAMEINSOURCE '`dvqe_small`', UPDATABLE FALSE, "teiid_couchbase:ISARRAYTABLE" 'false', "teiid_couchbase:NAMEDTYPEPAIR" '`type`:''SmallA''');
> </metadata>
> </model>
> <model name="BQT1" type="VIRTUAL">
> <metadata type="DDL">
> 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(1),
> ShortValue short,
> BigIntegerValue biginteger,
> BigDecimalValue bigdecimal,
> ObjectValue object)
> AS
> SELECT
> IntKey, StringKey, IntNum, StringNum, convert(FloatNum, float) AS FloatNum, convert(LongNum, long) AS LongNum,
> convert(DoubleNum, double) AS DoubleNum, convert(ByteNum, byte) AS ByteNum, PARSEDATE(DateValue,'yyyy-MM-dd') AS DateValue,
> PARSETIME(TimeValue,'HH:mm:ss') AS TimeValue, PARSETIMESTAMP(TimestampValue,'yyyy-MM-dd HH:mm:ss.S') AS TimstampValue, BooleanValue,
> convert(CharValue, char) AS CharValue, convert(ShortValue, short) AS ShortValue, convert(BigIntegerValue, biginteger) AS BigIntegerValue,
> convert(BigDecimalValue, bigdecimal) AS BigDecimalValue, convert(ObjectValue, object) AS ObjectValue
> FROM
> Couchbase_small.SmallA;
> </metadata>
> </model>
> </vdb>
> {code}
> Query against Source model works fine as expected:
> {code:sql|title=Query against source}
> SELECT BigIntegerValue FROM Couchbase_small.SMallA
> {code}
> returns correct results.
> But query against the view:
> {code:sql|title=Query against view}
> SELECT BigIntegerValue FROM BQT1.SMallA
> {code}
> throws:
> {code:title=server.log}
> 12:41:23,221 ERROR [org.teiid.CONNECTOR] (Worker9_QueryProcessorQueue75) Connector worker process failed for atomic-request=17PK+37nW05t.1.0.18: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigInteger
> at com.couchbase.client.java.document.json.JsonObject.getBigInteger(JsonObject.java:435) [java-client-2.4.2.jar:]
> at org.teiid.translator.couchbase.CouchbaseQueryExecution.next(CouchbaseQueryExecution.java:108) [translator-couchbase-8.12.11.6_4.jar:8.12.11.6_4]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:433)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
> at sun.reflect.GeneratedMethodAccessor173.invoke(Unknown Source) [:1.8.0_121]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_121]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_121]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy79.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) [rt.jar:1.8.0_121]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
> 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:1142) [rt.jar:1.8.0_121]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121]
> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
> 12:41:23,228 WARN [org.teiid.PROCESSOR] (Worker8_QueryProcessorQueue76) TEIID30020 Processing exception for request 17PK+37nW05t.1 'TEIID30504 couchbase_small: java.lang.Integer cannot be cast to java.math.BigInteger'. Originally TeiidProcessingException JsonObject.java:435. Enable more detailed logging to see the entire stacktrace.
> {code}
> Source command for query against Source model:
> {code:title=teiid-command.log}
> 12:41:12,260 INFO [org.teiid.COMMAND_LOG] (New I/O worker #3) 17PK+37nW05t START USER COMMAND: startTime=2017-09-18 12:41:12.259 requestID=17PK+37nW05t.0 txID=null sessionID=17PK+37nW05t applicationName=JDBC principal=user at teiid-security vdbName=couchbase vdbVersion=1 sql=SELECT bigintegerValue FROM Couchbase_small.SMallA
> 12:41:13,490 DEBUG [org.teiid.COMMAND_LOG] (Worker9_QueryProcessorQueue71) 17PK+37nW05t START DATA SRC COMMAND: startTime=2017-09-18 12:41:13.49 requestID=17PK+37nW05t.0 sourceCommandID=0 executionID=17 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security sql=SELECT Couchbase_small.SmallA.BigIntegerValue AS c_0 FROM Couchbase_small.SmallA LIMIT 100
> 12:41:13,490 DEBUG [org.teiid.COMMAND_LOG] (Worker9_QueryProcessorQueue71) 17PK+37nW05t SOURCE SRC COMMAND: endTime=2017-09-18 12:41:13.49 requestID=17PK+37nW05t.0 sourceCommandID=0 executionID=17 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security sourceCommand=[SELECT `$cb_c1_BigIntegerValue` c_0 FROM `dvqe_small` `$cb_t1` LET `$cb_c1_BigIntegerValue` = `$cb_t1`.`BigIntegerValue` WHERE `$cb_t1`.`type` = 'SmallA' LIMIT 100]
> 12:41:14,190 DEBUG [org.teiid.COMMAND_LOG] (Worker8_QueryProcessorQueue72) 17PK+37nW05t END SRC COMMAND: endTime=2017-09-18 12:41:14.19 requestID=17PK+37nW05t.0 sourceCommandID=0 executionID=17 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security finalRowCount=50 cpuTime(ns)=9733973
> 12:41:14,196 INFO [org.teiid.COMMAND_LOG] (Worker8_QueryProcessorQueue73) 17PK+37nW05t END USER COMMAND: endTime=2017-09-18 12:41:14.195 requestID=17PK+37nW05t.0 txID=null sessionID=17PK+37nW05t principal=user at teiid-security vdbName=couchbase vdbVersion=1 finalRowCount=50
> {code}
> Source command for query against View:
> {code:title=teiid-command.log - error}
> 2:41:22,950 INFO [org.teiid.COMMAND_LOG] (New I/O worker #3) 17PK+37nW05t START USER COMMAND: startTime=2017-09-18 12:41:22.949 requestID=17PK+37nW05t.1 txID=null sessionID=17PK+37nW05t applicationName=JDBC principal=user at teiid-security vdbName=couchbase vdbVersion=1 sql=SELECT bigintegerValue FROM BQT1.SMallA
> 12:41:22,957 DEBUG [org.teiid.COMMAND_LOG] (Worker9_QueryProcessorQueue75) 17PK+37nW05t START DATA SRC COMMAND: startTime=2017-09-18 12:41:22.957 requestID=17PK+37nW05t.1 sourceCommandID=0 executionID=18 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security sql=SELECT convert(Couchbase_small.SmallA.BigIntegerValue, biginteger) AS c_0 FROM Couchbase_small.SmallA LIMIT 100
> 12:41:22,958 DEBUG [org.teiid.COMMAND_LOG] (Worker9_QueryProcessorQueue75) 17PK+37nW05t SOURCE SRC COMMAND: endTime=2017-09-18 12:41:22.958 requestID=17PK+37nW05t.1 sourceCommandID=0 executionID=18 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security sourceCommand=[SELECT TONUMBER(`$cb_c1_BigIntegerValue`) c_0 FROM `dvqe_small` `$cb_t1` LET `$cb_c1_BigIntegerValue` = `$cb_t1`.`BigIntegerValue` WHERE `$cb_t1`.`type` = 'SmallA' LIMIT 100]
> 12:41:23,221 DEBUG [org.teiid.COMMAND_LOG] (Worker9_QueryProcessorQueue75) 17PK+37nW05t ERROR SRC COMMAND: endTime=2017-09-18 12:41:23.22 requestID=17PK+37nW05t.1 sourceCommandID=0 executionID=18 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security
> 12:41:23,226 DEBUG [org.teiid.COMMAND_LOG] (Worker8_QueryProcessorQueue76) 17PK+37nW05t END SRC COMMAND: endTime=2017-09-18 12:41:23.226 requestID=17PK+37nW05t.1 sourceCommandID=0 executionID=18 txID=null modelName=Couchbase_small translatorName=couchbase sessionID=17PK+37nW05t principal=user at teiid-security finalRowCount=0 cpuTime(ns)=5965611
> 12:41:23,227 INFO [org.teiid.COMMAND_LOG] (Worker8_QueryProcessorQueue76) 17PK+37nW05t ERROR USER COMMAND: endTime=2017-09-18 12:41:23.227 requestID=17PK+37nW05t.1 txID=null sessionID=17PK+37nW05t principal=user at teiid-security vdbName=couchbase vdbVersion=1 finalRowCount=null
> 12:41:23,237 INFO [org.teiid.COMMAND_LOG] (Worker8_QueryProcessorQueue76) 17PK+37nW05t END USER COMMAND: endTime=2017-09-18 12:41:23.237 requestID=17PK+37nW05t.1 txID=null sessionID=17PK+37nW05t principal=user at teiid-security vdbName=couchbase vdbVersion=1 finalRowCount=0
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the teiid-issues
mailing list