Using Isthmus to convert reference TPC-H SQL to Substrait and then back to SQL, the generated SQL produces different query results to the reference SQL (at least in PostgreSQL).
PostgreSqlIntegrationTest > testTpcH(int) > [14] 14 FAILED
org.opentest4j.AssertionFailedError: Reference and generated SQL produce 2 different results.
Reference SQL:
select
100.00 * sum(case
when "P"."P_TYPE" like 'PROMO%'
then "L"."L_EXTENDEDPRICE" * (1 - "L"."L_DISCOUNT")
else 0
end) / sum("L"."L_EXTENDEDPRICE" * (1 - "L"."L_DISCOUNT")) as "PROMO_REVENUE"
from
"LINEITEM" "L",
"PART" "P"
where
"L"."L_PARTKEY" = "P"."P_PARTKEY"
and "L"."L_SHIPDATE" >= date '1994-08-01'
and "L"."L_SHIPDATE" < date '1994-08-01' + interval '1 month'
Generated SQL:
SELECT 100.00 * SUM(CAST(CASE WHEN "PART"."P_TYPE" LIKE 'PROMO%' THEN "LINEITEM"."L_EXTENDEDPRICE" * (1 - "LINEITEM"."L_DISCOUNT") ELSE 0 END AS DECIMAL(19, 0))) / SUM("LINEITEM"."L_EXTENDEDPRICE" * (1 - "LINEITEM"."L_DISCOUNT")) AS "PROMO_REVENUE"
FROM "LINEITEM",
"PART"
WHERE "LINEITEM"."L_PARTKEY" = "PART"."P_PARTKEY" AND "LINEITEM"."L_SHIPDATE" >= DATE '1994-08-01' AND "LINEITEM"."L_SHIPDATE" < (DATE '1994-08-01' + INTERVAL '0-1' YEAR TO MONTH)
Using Isthmus to convert reference TPC-H SQL to Substrait and then back to SQL, the generated SQL produces different query results to the reference SQL (at least in PostgreSQL).