[JBoss JIRA] (TEIID-3707) Wrong Data returned when a procedure is executed in the SELECT clause
by Johnathon Lee (JIRA)
[ https://issues.jboss.org/browse/TEIID-3707?page=com.atlassian.jira.plugin... ]
Johnathon Lee closed TEIID-3707.
--------------------------------
Resolution: Done
> Wrong Data returned when a procedure is executed in the SELECT clause
> ---------------------------------------------------------------------
>
> Key: TEIID-3707
> URL: https://issues.jboss.org/browse/TEIID-3707
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 7.6
> Reporter: dalex dalex
> Assignee: Steven Hawkins
> Priority: Blocker
> Fix For: 8.7.7.6_2, 8.7.5, 8.11.5, 8.12
>
> Attachments: highcpu-threads.png, out.1, out.2, out.3, sample_coords.sql, wrong_data.jpg
>
>
> I've found the following problem when executing a stored procedure in the SELECT clause. It calculates wrong data in a seemingly random fashion.
> This is a stored procedure which was created to determine whether a given coordinate lies within a specific rectangle. If this procedure is tested in a simple manner (SELECT .. FROM (EXEC ..)) the results are correctly retuned (0 = outside the rectangle and 1 otherwise).
> {code:sql}
> CREATE virtual procedure point_inside_store (
> pos_x float
> ,pos_y float
> ) RETURNS (
> "insideFence" integer
> ) AS
> BEGIN
> DECLARE integer insideFence = 0 ;
> DECLARE float lowerLimit = 0.0 ;
> DECLARE float upperLimit = 17.0 ;
> DECLARE float leftLimit = 0.0 ;
> DECLARE float rightLimit = 53.0 ;
> IF (
> pos_x >= leftLimit
> AND pos_x <= rightLimit
> AND pos_y >= lowerLimit
> AND pos_y <= upperLimit
> )
> BEGIN
> insideFence = 1 ;
> END
> SELECT
> insideFence ;
> END
> {code}
> If now the same procedure is included in a SELECT clause of a query:
> {code:sql}
> SELECT
> "citmp.KoordX"
> ,"citmp.KoordY"
> ,(
> SELECT
> "store.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "store"
> ) as "insideStore"
> ,(
> SELECT
> "firstsection.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "firstsection"
> ) as "insideFirstsection"
> FROM
> "test.sample_coords" as "citmp"
> ORDER BY
> insideStore ASC
> ,insideFirstsection DESC;;
> {code}
> it calculates different results. The same coordinates that yielded 0 before now yield 1.
> !wrong_data.jpg|thumbnail!
> Note that the main query has 2 columns executing the exact same procedure but there are result sets, that have different values in the last two columns. This should not be possible.
> In attachment you will find sample_coords table with a sample of coordinates.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years, 9 months
[JBoss JIRA] (TEIID-3707) Wrong Data returned when a procedure is executed in the SELECT clause
by Johnathon Lee (JIRA)
[ https://issues.jboss.org/browse/TEIID-3707?page=com.atlassian.jira.plugin... ]
Johnathon Lee updated TEIID-3707:
---------------------------------
Fix Version/s: 8.7.7.6_2
> Wrong Data returned when a procedure is executed in the SELECT clause
> ---------------------------------------------------------------------
>
> Key: TEIID-3707
> URL: https://issues.jboss.org/browse/TEIID-3707
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 7.6
> Reporter: dalex dalex
> Assignee: Steven Hawkins
> Priority: Blocker
> Fix For: 8.12, 8.11.5, 8.7.5, 8.7.7.6_2
>
> Attachments: highcpu-threads.png, out.1, out.2, out.3, sample_coords.sql, wrong_data.jpg
>
>
> I've found the following problem when executing a stored procedure in the SELECT clause. It calculates wrong data in a seemingly random fashion.
> This is a stored procedure which was created to determine whether a given coordinate lies within a specific rectangle. If this procedure is tested in a simple manner (SELECT .. FROM (EXEC ..)) the results are correctly retuned (0 = outside the rectangle and 1 otherwise).
> {code:sql}
> CREATE virtual procedure point_inside_store (
> pos_x float
> ,pos_y float
> ) RETURNS (
> "insideFence" integer
> ) AS
> BEGIN
> DECLARE integer insideFence = 0 ;
> DECLARE float lowerLimit = 0.0 ;
> DECLARE float upperLimit = 17.0 ;
> DECLARE float leftLimit = 0.0 ;
> DECLARE float rightLimit = 53.0 ;
> IF (
> pos_x >= leftLimit
> AND pos_x <= rightLimit
> AND pos_y >= lowerLimit
> AND pos_y <= upperLimit
> )
> BEGIN
> insideFence = 1 ;
> END
> SELECT
> insideFence ;
> END
> {code}
> If now the same procedure is included in a SELECT clause of a query:
> {code:sql}
> SELECT
> "citmp.KoordX"
> ,"citmp.KoordY"
> ,(
> SELECT
> "store.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "store"
> ) as "insideStore"
> ,(
> SELECT
> "firstsection.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "firstsection"
> ) as "insideFirstsection"
> FROM
> "test.sample_coords" as "citmp"
> ORDER BY
> insideStore ASC
> ,insideFirstsection DESC;;
> {code}
> it calculates different results. The same coordinates that yielded 0 before now yield 1.
> !wrong_data.jpg|thumbnail!
> Note that the main query has 2 columns executing the exact same procedure but there are result sets, that have different values in the last two columns. This should not be possible.
> In attachment you will find sample_coords table with a sample of coordinates.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years, 9 months
[JBoss JIRA] (TEIID-3707) Wrong Data returned when a procedure is executed in the SELECT clause
by Johnathon Lee (JIRA)
[ https://issues.jboss.org/browse/TEIID-3707?page=com.atlassian.jira.plugin... ]
Johnathon Lee reopened TEIID-3707:
----------------------------------
> Wrong Data returned when a procedure is executed in the SELECT clause
> ---------------------------------------------------------------------
>
> Key: TEIID-3707
> URL: https://issues.jboss.org/browse/TEIID-3707
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 7.6
> Reporter: dalex dalex
> Assignee: Steven Hawkins
> Priority: Blocker
> Fix For: 8.12, 8.11.5, 8.7.5
>
> Attachments: highcpu-threads.png, out.1, out.2, out.3, sample_coords.sql, wrong_data.jpg
>
>
> I've found the following problem when executing a stored procedure in the SELECT clause. It calculates wrong data in a seemingly random fashion.
> This is a stored procedure which was created to determine whether a given coordinate lies within a specific rectangle. If this procedure is tested in a simple manner (SELECT .. FROM (EXEC ..)) the results are correctly retuned (0 = outside the rectangle and 1 otherwise).
> {code:sql}
> CREATE virtual procedure point_inside_store (
> pos_x float
> ,pos_y float
> ) RETURNS (
> "insideFence" integer
> ) AS
> BEGIN
> DECLARE integer insideFence = 0 ;
> DECLARE float lowerLimit = 0.0 ;
> DECLARE float upperLimit = 17.0 ;
> DECLARE float leftLimit = 0.0 ;
> DECLARE float rightLimit = 53.0 ;
> IF (
> pos_x >= leftLimit
> AND pos_x <= rightLimit
> AND pos_y >= lowerLimit
> AND pos_y <= upperLimit
> )
> BEGIN
> insideFence = 1 ;
> END
> SELECT
> insideFence ;
> END
> {code}
> If now the same procedure is included in a SELECT clause of a query:
> {code:sql}
> SELECT
> "citmp.KoordX"
> ,"citmp.KoordY"
> ,(
> SELECT
> "store.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "store"
> ) as "insideStore"
> ,(
> SELECT
> "firstsection.insideFence"
> FROM
> (
> EXEC procs.point_inside_store (
> CAST (
> "citmp.KoordX" AS float
> )
> ,CAST (
> "citmp.KoordY" AS float
> )
> )
> ) as "firstsection"
> ) as "insideFirstsection"
> FROM
> "test.sample_coords" as "citmp"
> ORDER BY
> insideStore ASC
> ,insideFirstsection DESC;;
> {code}
> it calculates different results. The same coordinates that yielded 0 before now yield 1.
> !wrong_data.jpg|thumbnail!
> Note that the main query has 2 columns executing the exact same procedure but there are result sets, that have different values in the last two columns. This should not be possible.
> In attachment you will find sample_coords table with a sample of coordinates.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years, 9 months
[JBoss JIRA] (TEIID-4271) Consume Teiid OData from Salesforce
by Steven Hawkins (JIRA)
Steven Hawkins created TEIID-4271:
-------------------------------------
Summary: Consume Teiid OData from Salesforce
Key: TEIID-4271
URL: https://issues.jboss.org/browse/TEIID-4271
Project: Teiid
Issue Type: Feature Request
Components: OData
Reporter: Steven Hawkins
Fix For: 9.x
At least when consuming OData 2, Salesforce does not support Collection(Int16|Int32|String). Since we expose our system metadata, including pg metadata, in the OData metadata, this means that Salesforce won't consume. If the pg metadata is disabled and there are not primitive array columns in the rest of the metadata, then Salesforce can consume.
Since this is working around a Salesforce issue, we shouldn't introduce too intrusive of a mechanism for this. And in general we may need to use extension metadata to allow users to exclude objects in a more granular way from being exposed in OData metadata.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years, 9 months
[JBoss JIRA] (TEIID-4269) numeric calculated fields not displayed with odata4
by Ramesh Reddy (JIRA)
[ https://issues.jboss.org/browse/TEIID-4269?page=com.atlassian.jira.plugin... ]
Ramesh Reddy reassigned TEIID-4269:
-----------------------------------
Assignee: Ramesh Reddy (was: Steven Hawkins)
> numeric calculated fields not displayed with odata4
> ---------------------------------------------------
>
> Key: TEIID-4269
> URL: https://issues.jboss.org/browse/TEIID-4269
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.13.3
> Reporter: Mirco Marchitiello
> Assignee: Ramesh Reddy
> Priority: Minor
>
> I've created a virtual table with a new field defined in this way:
> select ROUND((BA.PREIS / BA.PEINH), 3) AS UnitPrice from xxxxxx
> for the source field are bigdecimal I define UnitPrice as
> BigDecimal (13,3)
> If I run the qery from JDBC
> select * from PurchaseRequisitionEntity where PurchaseRequisitionKey = '300-8000001452-00010' ;
> PREIS = 539,568
> PEINH = 106
> UnitPrice = 5,090.264
> And the result is correct. If I run from odata2
> /odata/CASALE.1/Entities.PurchaseRequisitionEntity('300-8000001452-00010')?$format=json
> "UnitPrice" : "5090.2640000000000000"
> As you can see the field is rounded to the 3rd digit but 13 more digits are returned with 0 value.
> Anyway odata2 succeeds in returning the result without errors.
> With odata4 I get an error:
> /odata4/CASALE.1/Entities/PurchaseRequisitionEntity('300-8000001452-00010')?$format=json
> {"error":{"code":null,"message":"The value '5090.2640000000000000' is not valid for property 'UnitPrice'."}}
> I think that's because the length of the field is greater then the matedata definition.
> At the moment the only solution I can imagine is to convert the number to a string in the proper format and the parse it into a number
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years, 9 months