[JBoss JIRA] (TEIID-4967) Couchbase - incorrect data returned from VIEW if one value is NULL
by Juraj Duráni (JIRA)
[ https://issues.jboss.org/browse/TEIID-4967?page=com.atlassian.jira.plugin... ]
Juraj Duráni commented on TEIID-4967:
-------------------------------------
Set as a blocker and updated description - added example of "columns shift".
> Couchbase - incorrect data returned from VIEW if one value is NULL
> ------------------------------------------------------------------
>
> Key: TEIID-4967
> URL: https://issues.jboss.org/browse/TEIID-4967
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
> Priority: Blocker
>
> I have a source model with FOREIGN TABLE and view model with VIEW which extracts subset of columns defined in FOREIGN TABLE.
> If one value in document is missing (i.e. from Teiid's point of view it's NULL), Teiid returns incorrect data from VIEW.
> In some cases, it returns NULL values for multiple columns (even if there is only one column with NULL).
> In other cases it shifts values - value from column c contains value of column c+1, column c+1 contains value of c+2 etc.
> For Source model, I tried both NATIVE and DDL metadata.
> If you need, I can provide you access to testing environment.
> *Query:* SELECT * FROM couchbase_small.smalla WHERE intkey = 5;
> *Result*
> ||documentID||FloatNum||IntKey||BigIntegerValue||StringKey||CharValue||LongNum||type||DoubleNum||ObjectValue||ShortValue||BigDecimalValue||DateValue||BooleanValue||TimestampValue||ByteNum||StringNum||TimeValue||IntNum||
> |smalla_5|-19|5|-19|5|0|-19|SmallA|-19|-19|-32763|-19|2000-01-06|true|2000-01-01 00:00:05.0|<null>|-19|05:00:00|-19|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 5;
> *Result:*
> ||IntKey||StringKey||IntNum||StringNum||FloatNum||LongNum||DoubleNum||ByteNum||DateValue||TimeValue||TimestampValue||BooleanValue||CharValue||ShortValue||BigIntegerValue||BigDecimalValue||ObjectValue||
> |5|5|-19|-19|-19|-19|-19|<null>|<null>|<null>|<null>|true|<null>|<null>|<null>|<null>|<null>|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 0;
> *Result:* Error: TEIID10074 Invalid Byte format in String: 2000-01-01
> *Stack trace:*
> {code:plain}
> 12:55:05,263 WARN [org.teiid.CONNECTOR] (Worker15_QueryProcessorQueue279) Connector worker process failed for atomic-request=5x16wQN8Jjck.15.0.61: org.teiid.core.types.TransformationException: TEIID10074 Invalid Byte format in String: 2000-01-01
> at org.teiid.core.types.basic.StringToByteTransform.transformDirect(StringToByteTransform.java:43) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.Transform.transform(Transform.java:47) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.DataTypeManager.transformValue(DataTypeManager.java:942) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.correctTypes(ConnectorWorkItem.java:593)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:446)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
> at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) [:1.8.0-internal]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0-internal]
> at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0-internal]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy45.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-internal]
> 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-internal]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0-internal]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0-internal]
> {code}
> *Query:* SELECT IntKey, IntNum, FloatNum FROM Couchbase_small.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|<null>|-24|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> *Query:* SELECT IntKey, IntNum, FloatNum FROM BQT1.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|-24|<null>|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> {code:xml|title=VDB}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <vdb name="couchbase" version="1">
> <model name="Couchbase_small" type="PHYSICAL" visible="false">
> <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, convert(DateValue, date) AS DateValue,
> convert(TimeValue, time) AS TimeValue, convert(TimestampValue, timestamp) AS TimestampValue, 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}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
6 years, 10 months
[JBoss JIRA] (TEIID-4967) Couchbase - incorrect data returned from VIEW if one value is NULL
by Juraj Duráni (JIRA)
[ https://issues.jboss.org/browse/TEIID-4967?page=com.atlassian.jira.plugin... ]
Juraj Duráni updated TEIID-4967:
--------------------------------
Description:
I have a source model with FOREIGN TABLE and view model with VIEW which extracts subset of columns defined in FOREIGN TABLE.
If one value in document is missing (i.e. from Teiid's point of view it's NULL), Teiid returns incorrect data from VIEW.
In some cases, it returns NULL values for multiple columns (even if there is only one column with NULL).
In other cases it shifts values - value from column c contains value of column c+1, column c+1 contains value of c+2 etc.
For Source model, I tried both NATIVE and DDL metadata.
If you need, I can provide you access to testing environment.
*Query:* SELECT * FROM couchbase_small.smalla WHERE intkey = 5;
*Result*
||documentID||FloatNum||IntKey||BigIntegerValue||StringKey||CharValue||LongNum||type||DoubleNum||ObjectValue||ShortValue||BigDecimalValue||DateValue||BooleanValue||TimestampValue||ByteNum||StringNum||TimeValue||IntNum||
|smalla_5|-19|5|-19|5|0|-19|SmallA|-19|-19|-32763|-19|2000-01-06|true|2000-01-01 00:00:05.0|<null>|-19|05:00:00|-19|
*Query:* SELECT * FROM bqt1.smalla WHERE intkey = 5;
*Result:*
||IntKey||StringKey||IntNum||StringNum||FloatNum||LongNum||DoubleNum||ByteNum||DateValue||TimeValue||TimestampValue||BooleanValue||CharValue||ShortValue||BigIntegerValue||BigDecimalValue||ObjectValue||
|5|5|-19|-19|-19|-19|-19|<null>|<null>|<null>|<null>|true|<null>|<null>|<null>|<null>|<null>|
*Query:* SELECT * FROM bqt1.smalla WHERE intkey = 0;
*Result:* Error: TEIID10074 Invalid Byte format in String: 2000-01-01
*Stack trace:*
{code:plain}
12:55:05,263 WARN [org.teiid.CONNECTOR] (Worker15_QueryProcessorQueue279) Connector worker process failed for atomic-request=5x16wQN8Jjck.15.0.61: org.teiid.core.types.TransformationException: TEIID10074 Invalid Byte format in String: 2000-01-01
at org.teiid.core.types.basic.StringToByteTransform.transformDirect(StringToByteTransform.java:43) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.core.types.Transform.transform(Transform.java:47) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.core.types.DataTypeManager.transformValue(DataTypeManager.java:942) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.correctTypes(ConnectorWorkItem.java:593)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:446)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) [:1.8.0-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0-internal]
at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0-internal]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy45.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-internal]
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-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0-internal]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0-internal]
{code}
*Query:* SELECT IntKey, IntNum, FloatNum FROM Couchbase_small.SmallA
*Result:*
||IntKey||IntNum||FloatNum||
|0|<null>|-24|
|1|-23|-23|
|10|-14|-14|
|...|...|...|
*Query:* SELECT IntKey, IntNum, FloatNum FROM BQT1.SmallA
*Result:*
||IntKey||IntNum||FloatNum||
|0|-24|<null>|
|1|-23|-23|
|10|-14|-14|
|...|...|...|
{code:xml|title=VDB}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="couchbase" version="1">
<model name="Couchbase_small" type="PHYSICAL" visible="false">
<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, convert(DateValue, date) AS DateValue,
convert(TimeValue, time) AS TimeValue, convert(TimestampValue, timestamp) AS TimestampValue, 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}
was:
I have a source model with FOREIGN TABLE and view model with VIEW which extracts subset of columns defined in FOREIGN TABLE.
If one value in document is missing (i.e. from Teiid's point of view it's NULL), Teiid returns incorrect data from VIEW.
In some cases, it returns NULL values for multiple columns (even if there is only one column with NULL).
In other cases it shifts values - value from column c contains value of column c+1, column c+1 contains value of c+2 etc.
For Source model, I tried both NATIVE and DDL metadata.
If you need, I can provide you access to testing environment.
*Query:* SELECT * FROM couchbase_small.smalla WHERE intkey = 5;
*Result*
||documentID||FloatNum||IntKey||BigIntegerValue||StringKey||CharValue||LongNum||type||DoubleNum||ObjectValue||ShortValue||BigDecimalValue||DateValue||BooleanValue||TimestampValue||ByteNum||StringNum||TimeValue||IntNum||
|smalla_5|-19|5|-19|5|0|-19|SmallA|-19|-19|-32763|-19|2000-01-06|true|2000-01-01 00:00:05.0|<null>|-19|05:00:00|-19|
*Query:* SELECT * FROM bqt1.smalla WHERE intkey = 5;
*Result:*
||IntKey||StringKey||IntNum||StringNum||FloatNum||LongNum||DoubleNum||ByteNum||DateValue||TimeValue||TimestampValue||BooleanValue||CharValue||ShortValue||BigIntegerValue||BigDecimalValue||ObjectValue||
|5|5|-19|-19|-19|-19|-19|<null>|<null>|<null>|<null>|true|<null>|<null>|<null>|<null>|<null>|
*Query:* SELECT * FROM bqt1.smalla WHERE intkey = 0;
*Result:* Error: TEIID10074 Invalid Byte format in String: 2000-01-01
*Stack trace:*
{code:plain}
12:55:05,263 WARN [org.teiid.CONNECTOR] (Worker15_QueryProcessorQueue279) Connector worker process failed for atomic-request=5x16wQN8Jjck.15.0.61: org.teiid.core.types.TransformationException: TEIID10074 Invalid Byte format in String: 2000-01-01
at org.teiid.core.types.basic.StringToByteTransform.transformDirect(StringToByteTransform.java:43) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.core.types.Transform.transform(Transform.java:47) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.core.types.DataTypeManager.transformValue(DataTypeManager.java:942) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.correctTypes(ConnectorWorkItem.java:593)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:446)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) [:1.8.0-internal]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0-internal]
at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0-internal]
at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
at com.sun.proxy.$Proxy45.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-internal]
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-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0-internal]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0-internal]
{code}
{code:xml|title=VDB}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="couchbase" version="1">
<model name="Couchbase_small" type="PHYSICAL" visible="false">
<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, convert(DateValue, date) AS DateValue,
convert(TimeValue, time) AS TimeValue, convert(TimestampValue, timestamp) AS TimestampValue, 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}
> Couchbase - incorrect data returned from VIEW if one value is NULL
> ------------------------------------------------------------------
>
> Key: TEIID-4967
> URL: https://issues.jboss.org/browse/TEIID-4967
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
>
> I have a source model with FOREIGN TABLE and view model with VIEW which extracts subset of columns defined in FOREIGN TABLE.
> If one value in document is missing (i.e. from Teiid's point of view it's NULL), Teiid returns incorrect data from VIEW.
> In some cases, it returns NULL values for multiple columns (even if there is only one column with NULL).
> In other cases it shifts values - value from column c contains value of column c+1, column c+1 contains value of c+2 etc.
> For Source model, I tried both NATIVE and DDL metadata.
> If you need, I can provide you access to testing environment.
> *Query:* SELECT * FROM couchbase_small.smalla WHERE intkey = 5;
> *Result*
> ||documentID||FloatNum||IntKey||BigIntegerValue||StringKey||CharValue||LongNum||type||DoubleNum||ObjectValue||ShortValue||BigDecimalValue||DateValue||BooleanValue||TimestampValue||ByteNum||StringNum||TimeValue||IntNum||
> |smalla_5|-19|5|-19|5|0|-19|SmallA|-19|-19|-32763|-19|2000-01-06|true|2000-01-01 00:00:05.0|<null>|-19|05:00:00|-19|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 5;
> *Result:*
> ||IntKey||StringKey||IntNum||StringNum||FloatNum||LongNum||DoubleNum||ByteNum||DateValue||TimeValue||TimestampValue||BooleanValue||CharValue||ShortValue||BigIntegerValue||BigDecimalValue||ObjectValue||
> |5|5|-19|-19|-19|-19|-19|<null>|<null>|<null>|<null>|true|<null>|<null>|<null>|<null>|<null>|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 0;
> *Result:* Error: TEIID10074 Invalid Byte format in String: 2000-01-01
> *Stack trace:*
> {code:plain}
> 12:55:05,263 WARN [org.teiid.CONNECTOR] (Worker15_QueryProcessorQueue279) Connector worker process failed for atomic-request=5x16wQN8Jjck.15.0.61: org.teiid.core.types.TransformationException: TEIID10074 Invalid Byte format in String: 2000-01-01
> at org.teiid.core.types.basic.StringToByteTransform.transformDirect(StringToByteTransform.java:43) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.Transform.transform(Transform.java:47) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.DataTypeManager.transformValue(DataTypeManager.java:942) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.correctTypes(ConnectorWorkItem.java:593)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:446)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
> at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) [:1.8.0-internal]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0-internal]
> at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0-internal]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy45.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-internal]
> 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-internal]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0-internal]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0-internal]
> {code}
> *Query:* SELECT IntKey, IntNum, FloatNum FROM Couchbase_small.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|<null>|-24|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> *Query:* SELECT IntKey, IntNum, FloatNum FROM BQT1.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|-24|<null>|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> {code:xml|title=VDB}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <vdb name="couchbase" version="1">
> <model name="Couchbase_small" type="PHYSICAL" visible="false">
> <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, convert(DateValue, date) AS DateValue,
> convert(TimeValue, time) AS TimeValue, convert(TimestampValue, timestamp) AS TimestampValue, 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}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
6 years, 10 months
[JBoss JIRA] (TEIID-4967) Couchbase - incorrect data returned from VIEW if one value is NULL
by Juraj Duráni (JIRA)
[ https://issues.jboss.org/browse/TEIID-4967?page=com.atlassian.jira.plugin... ]
Juraj Duráni updated TEIID-4967:
--------------------------------
Priority: Blocker (was: Major)
> Couchbase - incorrect data returned from VIEW if one value is NULL
> ------------------------------------------------------------------
>
> Key: TEIID-4967
> URL: https://issues.jboss.org/browse/TEIID-4967
> Project: Teiid
> Issue Type: Bug
> Components: Misc. Connectors
> Affects Versions: 8.12.x-6.4
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
> Priority: Blocker
>
> I have a source model with FOREIGN TABLE and view model with VIEW which extracts subset of columns defined in FOREIGN TABLE.
> If one value in document is missing (i.e. from Teiid's point of view it's NULL), Teiid returns incorrect data from VIEW.
> In some cases, it returns NULL values for multiple columns (even if there is only one column with NULL).
> In other cases it shifts values - value from column c contains value of column c+1, column c+1 contains value of c+2 etc.
> For Source model, I tried both NATIVE and DDL metadata.
> If you need, I can provide you access to testing environment.
> *Query:* SELECT * FROM couchbase_small.smalla WHERE intkey = 5;
> *Result*
> ||documentID||FloatNum||IntKey||BigIntegerValue||StringKey||CharValue||LongNum||type||DoubleNum||ObjectValue||ShortValue||BigDecimalValue||DateValue||BooleanValue||TimestampValue||ByteNum||StringNum||TimeValue||IntNum||
> |smalla_5|-19|5|-19|5|0|-19|SmallA|-19|-19|-32763|-19|2000-01-06|true|2000-01-01 00:00:05.0|<null>|-19|05:00:00|-19|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 5;
> *Result:*
> ||IntKey||StringKey||IntNum||StringNum||FloatNum||LongNum||DoubleNum||ByteNum||DateValue||TimeValue||TimestampValue||BooleanValue||CharValue||ShortValue||BigIntegerValue||BigDecimalValue||ObjectValue||
> |5|5|-19|-19|-19|-19|-19|<null>|<null>|<null>|<null>|true|<null>|<null>|<null>|<null>|<null>|
> *Query:* SELECT * FROM bqt1.smalla WHERE intkey = 0;
> *Result:* Error: TEIID10074 Invalid Byte format in String: 2000-01-01
> *Stack trace:*
> {code:plain}
> 12:55:05,263 WARN [org.teiid.CONNECTOR] (Worker15_QueryProcessorQueue279) Connector worker process failed for atomic-request=5x16wQN8Jjck.15.0.61: org.teiid.core.types.TransformationException: TEIID10074 Invalid Byte format in String: 2000-01-01
> at org.teiid.core.types.basic.StringToByteTransform.transformDirect(StringToByteTransform.java:43) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.Transform.transform(Transform.java:47) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.core.types.DataTypeManager.transformValue(DataTypeManager.java:942) [teiid-common-core-8.12.11.6_4-redhat-64-4.jar:8.12.11.6_4-redhat-64-4]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.correctTypes(ConnectorWorkItem.java:593)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:446)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
> at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) [:1.8.0-internal]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0-internal]
> at java.lang.reflect.Method.invoke(Method.java:483) [rt.jar:1.8.0-internal]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy45.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-internal]
> 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-internal]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0-internal]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0-internal]
> {code}
> *Query:* SELECT IntKey, IntNum, FloatNum FROM Couchbase_small.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|<null>|-24|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> *Query:* SELECT IntKey, IntNum, FloatNum FROM BQT1.SmallA
> *Result:*
> ||IntKey||IntNum||FloatNum||
> |0|-24|<null>|
> |1|-23|-23|
> |10|-14|-14|
> |...|...|...|
> {code:xml|title=VDB}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <vdb name="couchbase" version="1">
> <model name="Couchbase_small" type="PHYSICAL" visible="false">
> <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, convert(DateValue, date) AS DateValue,
> convert(TimeValue, time) AS TimeValue, convert(TimestampValue, timestamp) AS TimestampValue, 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}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
6 years, 10 months
[JBoss JIRA] (TEIID-4973) Couchbase - Teiid returns empty result if source query fails
by Juraj Duráni (JIRA)
Juraj Duráni created TEIID-4973:
-----------------------------------
Summary: Couchbase - Teiid returns empty result if source query fails
Key: TEIID-4973
URL: https://issues.jboss.org/browse/TEIID-4973
Project: Teiid
Issue Type: Bug
Components: Misc. Connectors
Reporter: Juraj Duráni
Assignee: Steven Hawkins
Priority: Blocker
Teiid does not provide any information to the user that query actually failed. Only empty result is returned.
Currently, issuing query like \[1\] produces source-specific query with syntax error \[2\] (result directly from Couchbase \[3\]). But Teiid returns empty result just like query succeeded with no rows.
{code:sql|title=\[1\] Query}
SELECT BQT1.SmallA.FloatNum FROM BQT1.SmallA WHERE BQT1.SmallA.FloatNum = 7
{code}
{code:plain|title=\[2\] Source-specific query}
10:16:09,749 DEBUG [org.teiid.CONNECTOR] (Worker12_QueryProcessorQueue86) TEIID29001 Source-specific Query: SELECT TONUMBER(`$cb_c1_FloatNum`) FROM `dvqe_small` `$cb_t1` LET `$cb_c1_FloatNum` = `$cb_t1`.`FloatNum`TONUMBER() WHERE TONUMBER(`$cb_c1_FloatNum`) = 7.0 AND `$cb_t1`.`type` = 'SmallA'
{code}
{code:plain|title=\[3\] Couchbase result}
[
{
"code": 3000,
"msg": "syntax error - at TONUMBER",
"query_from_user": "SELECT TONUMBER(`$cb_c1_FloatNum`) FROM `dvqe_small` `$cb_t1` LET `$cb_c1_FloatNum` = `$cb_t1`.`FloatNum`TONUMBER() WHERE TONUMBER(`$cb_c1_FloatNum`) = 7.0 AND `$cb_t1`.`type` = 'SmallA'"
}
]
{code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
6 years, 10 months