Julian Hyde created CALCITE-6005:
------------------------------------

             Summary: POLYGON string representation has changed in JDK 19
                 Key: CALCITE-6005
                 URL: https://issues.apache.org/jira/browse/CALCITE-6005
             Project: Calcite
          Issue Type: Improvement
            Reporter: Julian Hyde


I am getting a test error when I run RelOptRulesTest on JDK 19 and ARM (Apple 
M1).

{noformat}
$ diff -u core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml 
core/build/diffrepo/test/org/apache/calcite/test/RelOptRulesTest_actual.xml
--- 
/Users/julianhyde/dev/calcite.1/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
 2023-09-13 11:52:04
+++ 
/Users/julianhyde/dev/calcite.1/core/build/diffrepo/test/org/apache/calcite/test/RelOptRulesTest_actual.xml
 2023-09-13 12:08:52
@@ -14044,7 +14044,7 @@
     <Resource name="planAfter">
       <![CDATA[
 LogicalProject(NAME=[$0], LATITUDE=[$1], LONGITUDE=[$2], CUISINE=[$3], 
HILBERT=[$4])
-  LogicalFilter(condition=[AND(SEARCH($4, Sarg[[33033..33035], [33050..33053], 
[33055..33080], [33092..33100], [33112..33156], [33164..33176], [33236..33244], 
[33252..33254], [36456..36464], [36496..36520]]), ST_CONTAINS(POLYGON ((16 20, 
15.884711682419383 18.829458067903232, 15.54327719506772 17.703899405809462, 
14.988817673815271 16.666578601882385, 14.242640687119286 15.757359312880716, 
13.333421398117615 15.011182326184729, 12.29610059419054 14.45672280493228, 
11.17054193209677 14.115288317580617, 10 14, 8.82945806790323 
14.115288317580617, 7.703899405809461 14.45672280493228, 6.666578601882389 
15.011182326184727, 5.757359312880715 15.757359312880714, 5.011182326184728 
16.666578601882385, 4.45672280493228 17.70389940580946, 4.115288317580617 
18.82945806790323, 4 20, 4.115288317580617 21.17054193209677, 4.456722804932279 
22.296100594190538, 5.011182326184727 23.33342139811761, 5.757359312880714 
24.242640687119284, 6.666578601882387 24.98881767381527, 7.703899405809458 
25.54327719506772, 8.829458067903229 25.884711682419383, 9.999999999999998 26, 
11.17054193209677 25.884711682419383, 12.29610059419054 25.54327719506772, 
13.333421398117611 24.988817673815273, 14.242640687119284 24.242640687119284, 
14.988817673815271 23.333421398117615, 15.54327719506772 22.29610059419054, 
15.884711682419383 21.17054193209677, 16 20)):GEOMETRY, ST_POINT($2, $1)))])
+  LogicalFilter(condition=[AND(SEARCH($4, Sarg[[33033..33035], [33050..33053], 
[33055..33080], [33092..33100], [33112..33156], [33164..33176], [33236..33244], 
[33252..33254], [36456..36464], [36496..36520]]), ST_CONTAINS(POLYGON ((16 20, 
15.884711682419383 18.829458067903232, 15.54327719506772 17.703899405809462, 
14.988817673815271 16.666578601882385, 14.242640687119286 15.757359312880716, 
13.333421398117615 15.011182326184729, 12.29610059419054 14.45672280493228, 
11.17054193209677 14.115288317580617, 10 14, 8.82945806790323 
14.115288317580617, 7.703899405809461 14.45672280493228, 6.666578601882389 
15.011182326184727, 5.757359312880715 15.757359312880714, 5.011182326184728 
16.666578601882385, 4.45672280493228 17.70389940580946, 4.115288317580617 
18.82945806790323, 4 20, 4.115288317580617 21.17054193209677, 4.45672280493228 
22.296100594190538, 5.011182326184727 23.33342139811761, 5.757359312880714 
24.242640687119284, 6.666578601882387 24.98881767381527, 7.703899405809458 
25.54327719506772, 8.829458067903229 25.884711682419383, 9.999999999999998 26, 
11.17054193209677 25.884711682419383, 12.29610059419054 25.54327719506772, 
13.333421398117611 24.988817673815273, 14.242640687119284 24.242640687119284, 
14.988817673815271 23.333421398117615, 15.54327719506772 22.29610059419054, 
15.884711682419383 21.17054193209677, 16 20)):GEOMETRY, ST_POINT($2, $1)))])
     LogicalTableScan(table=[[CATALOG, GEO, RESTAURANTS]])
 ]]>
     </Resource>
@@ -14173,7 +14173,7 @@
     </Resource>
     <Resource name="planAfter">
       <![CDATA[
-LogicalProject(B=[CAST(POLYGON ((1 0, 0.9238795325112867 -0.3826834323650898, 
0.7071067811865476 -0.7071067811865475, 0.3826834323650898 -0.9238795325112867, 
0.0000000000000001 -1, -0.3826834323650897 -0.9238795325112867, 
-0.7071067811865475 -0.7071067811865476, -0.9238795325112867 
-0.3826834323650899, -1 -0.0000000000000001, -0.9238795325112868 
0.3826834323650897, -0.7071067811865477 0.7071067811865475, -0.3826834323650903 
0.9238795325112865, -0.0000000000000002 1, 0.38268343236509 0.9238795325112866, 
0.7071067811865474 0.7071067811865477, 0.9238795325112865 0.3826834323650904, 1 
0)):GEOMETRY):GEOMETRY])
+LogicalProject(B=[CAST(POLYGON ((1 0, 0.9238795325112867 -0.3826834323650898, 
0.7071067811865476 -0.7071067811865475, 0.3826834323650898 -0.9238795325112867, 
0.0000000000000001 -1, -0.3826834323650897 -0.9238795325112867, 
-0.7071067811865475 -0.7071067811865476, -0.9238795325112867 
-0.3826834323650899, -1 -0.0000000000000001, -0.9238795325112867 
0.3826834323650896, -0.7071067811865477 0.7071067811865475, -0.3826834323650903 
0.9238795325112865, -0.0000000000000002 1, 0.38268343236509 0.9238795325112866, 
0.7071067811865474 0.7071067811865477, 0.9238795325112865 0.3826834323650904, 1 
0)):GEOMETRY):GEOMETRY])
   LogicalTableScan(table=[[CATALOG, GEO, RESTAURANTS]])
 ]]>
     </Resource>
{noformat}

It's a little hard to see, but the number "4.45672280493228" has changed to 
"4.456722804932279". My hypothesis is that this is because 
[JDK-4511638|https://bugs.openjdk.org/browse/JDK-4511638] has been fixed in JDK 
19.

I believe that the new value is more "correct". However, we will still need to 
run the test on old JDKs. So we need to find a way to run the new 
double-to-string algorithm on older JDKs, or mask out the result in tests.

The bug seems to require both Apple silicon (ARM) and JDK 19. (It doesn't 
happen on Intel JDK 19 or ARM JDK 11.) I am a little confused that it only 
occurs on Apple silicon.



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

Reply via email to