You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "XiDuo You (Jira)" <ji...@apache.org> on 2023/02/03 09:04:00 UTC

[jira] [Comment Edited] (SPARK-41793) Incorrect result for window frames defined by a range clause on large decimals

    [ https://issues.apache.org/jira/browse/SPARK-41793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17683753#comment-17683753 ] 

XiDuo You edited comment on SPARK-41793 at 2/3/23 9:03 AM:
-----------------------------------------------------------

I'm not sure this is a correctness bug but I think it's more like a right behavior change.

An example, what happened if run this query ?
{code:java}
select 1 where where (1 + 999999999999999999999999999999999999.99) > 999999999999999999999999999999999999.99;{code}
Without ANSI, it returns empty, so the size of count should return 0.


was (Author: ulysses):
I'm not sure this is a correctness bug but I think it's more like a right behavior change.

An example, what happened if run this query ?
{code:java}
select 1 + 999999999999999999999999999999999999.99 {code}
Without ANSI, it returns null, so the size of count should return 0.

> Incorrect result for window frames defined by a range clause on large decimals 
> -------------------------------------------------------------------------------
>
>                 Key: SPARK-41793
>                 URL: https://issues.apache.org/jira/browse/SPARK-41793
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 3.4.0
>            Reporter: Gera Shegalov
>            Priority: Blocker
>              Labels: correctness
>
> Context https://github.com/NVIDIA/spark-rapids/issues/7429#issuecomment-1368040686
> The following windowing query on a simple two-row input should produce two non-empty windows as a result
> {code}
> from pprint import pprint
> data = [
>   ('9223372036854775807', '11342371013783243717493546650944543.47'),
>   ('9223372036854775807', '999999999999999999999999999999999999.99')
> ]
> df1 = spark.createDataFrame(data, 'a STRING, b STRING')
> df2 = df1.select(df1.a.cast('LONG'), df1.b.cast('DECIMAL(38,2)'))
> df2.createOrReplaceTempView('test_table')
> df = sql('''
>   SELECT 
>     COUNT(1) OVER (
>       PARTITION BY a 
>       ORDER BY b ASC 
>       RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING
>     ) AS CNT_1 
>   FROM 
>     test_table
>   ''')
> res = df.collect()
> df.explain(True)
> pprint(res)
> {code}
> SparkĀ 3.4.0-SNAPSHOT output:
> {code}
> [Row(CNT_1=1), Row(CNT_1=0)]
> {code}
> Spark 3.3.1 output as expected:
> {code}
> Row(CNT_1=1), Row(CNT_1=1)]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org