wzhvivl opened a new issue, #20194:
URL: https://github.com/apache/datafusion/issues/20194

   ### Describe the bug
   
   Hello, below is a simple query which is executing fine on 50.3.0 and started 
failing on 52.1.0. 
   
   
   
   ### To Reproduce
   
   CREATE TABLE table_1 (
        value_1_1 decimal(25) NULL,
        value_1_2 int4 NULL,
        value_1_3 bigint NULL
   );
   CREATE TABLE table_2 (
        value_2_1 bigint NULL,
        value_2_2 varchar(140) NULL,
        value_2_3 varchar(140) NULL
   );
   INSERT INTO table_1 (value_1_1,value_1_2,value_1_3) VALUES    (6774502793, 
10040029, 1120);
   INSERT INTO table_2 (value_2_1, value_2_2, value_2_3) VALUES(1120,'0','0');
    SELECT
         t1.value_1_1, t1.value_1_2
       , ROW_NUMBER()
       OVER
       (
           PARTITION BY t1.value_1_1, t1.value_1_2 ORDER BY 
                case when t2.value_2_2='0' then 1 else 0 end ASC,
                case when t2.value_2_3='0' then 1 else 0 end ASC
       ) ord
    FROM table_1 t1
    INNER JOIN table_2 t2
      ON  1=1
      AND t1.value_1_3=t2.value_2_1
      AND (nvl(t2.value_2_3,'0')='0');
   
   ### Expected behavior
   
   Query finishing without error.
   
   ### Additional context
   
   Error message is:
   SanityCheckPlan
   caused by
   Error during planning: Plan: [BoundedWindowAggExec: wdw=[row_number() 
PARTITION BY [t1.value_1_1, t1.value_1_2] ORDER BY [CASE WHEN t2.value_2_2 = 
Utf8(\0\) THEN Int64(1) ELSE Int64(0) END ASC NULLS LAST, CASE WHEN 
t2.value_2_3 = Utf8(\0\) THEN Int64(1) ELSE Int64(0) END ASC NULLS LAST] RANGE 
BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { \row_number() PARTITION BY 
[t1.value_1_1, t1.value_1_2] ORDER BY [CASE WHEN t2.value_2_2 = Utf8(\\\0\\\) 
THEN Int64(1) ELSE Int64(0) END ASC NULLS LAST, CASE WHEN t2.value_2_3 = 
Utf8(\\\0\\\) THEN Int64(1) ELSE Int64(0) END ASC NULLS LAST] RANGE BETWEEN 
UNBOUNDED PRECEDING AND CURRENT ROW\: UInt64 }, frame: RANGE BETWEEN UNBOUNDED 
PRECEDING AND CURRENT ROW], mode=[Sorted],
      SortExec: expr=[value_1_1@0 ASC NULLS LAST, value_1_2@1 ASC NULLS LAST, 
CASE WHEN value_2_2@2 = CASE WHEN value_2_3@3 IS NOT NULL THEN value_2_3@3 ELSE 
0 END THEN 1 ELSE 0 END ASC NULLS LAST, CASE WHEN value_2_3@3 = CASE WHEN 
value_2_3@3 IS NOT NULL THEN value_2_3@3 ELSE 0 END THEN 1 ELSE 0 END ASC NULLS 
LAST], preserve_partitioning=[true],
        RepartitionExec: partitioning=Hash([value_1_1@0, value_1_2@1], 16), 
input_partitions=1,
          ProjectionExec: expr=[value_1_1@2 as value_1_1, value_1_2@3 as 
value_1_2, value_2_2@0 as value_2_2, value_2_3@1 as value_2_3],
            HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(value_2_1@0, 
value_1_3@2)], projection=[value_2_2@1, value_2_3@2, value_1_1@3, value_1_2@4],
              FilterExec: CASE WHEN value_2_3@2 IS NOT NULL THEN value_2_3@2 
ELSE 0 END = 0,
                DataSourceExec: partitions=1, partition_sizes=[1],
              DataSourceExec: partitions=1, partition_sizes=[1]] does not 
satisfy order requirements: [value_1_1@0 NA, value_1_2@1 NA, CASE WHEN 
value_2_2@2 = 0 THEN 1 ELSE 0 END ASC NULLS LAST, CASE WHEN value_2_3@3 = 0 
THEN 1 ELSE 0 END ASC NULLS LAST]. Child-0 order: [[value_1_1@0 ASC NULLS LAST, 
value_1_2@1 ASC NULLS LAST, CASE WHEN value_2_2@2 = CASE WHEN value_2_3@3 IS 
NOT NULL THEN value_2_3@3 ELSE 0 END THEN 1 ELSE 0 END ASC NULLS LAST, CASE 
WHEN value_2_3@3 = CASE WHEN value_2_3@3 IS NOT NULL THEN value_2_3@3 ELSE 0 
END THEN 1 ELSE 0 END ASC NULLS LAST]]


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to