Skip to content

Bug: TDVT StandardTests Cannot coerce arithmetic expression error for Interval #11

@sgrebnov

Description

@sgrebnov

There are 300+ TDVT StandardTests failing with Interval and arithmetic expression coercion error.

Error during planning: Cannot coerce arithmetic expression Null * Interval(MonthDayNano) to valid types | SELECT ((CAST('1900-01-01 00:00:00' AS TIMESTAMP) + NULL * INTERVAL '1 DAY') + 1 * 3 * INTERVAL '1 MONTH') AS "TEMP(Test)(2232502461)(0)"

Error during planning: Cannot coerce arithmetic expression Int64 * Interval(MonthDayNano) to valid types | SELECT ("calcs"."date0" - (EXTRACT(EPOCH FROM (CAST(("calcs"."date1" - 1 * INTERVAL '1 DAY') AS TIMESTAMP) - "calcs"."date2")) / (60.0 * 60 * 24)) * INTERVAL '1 DAY') AS "TEMP(Test)(750868662)(0)"

Error during planning: Cannot coerce arithmetic expression Float64 * Interval(MonthDayNano) to valid types | SELECT ("calcs"."date0" + "calcs"."num4" * INTERVAL '1 DAY') AS "TEMP(Test)(1817739360)(0)"

This is currently a DataFusion limitation:

All tests failures with example input

+-------------+-------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| error_count | error_message                                                                                                                       | input_example                                                                                                                                                                                        |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 214         | Error during planning: Cannot coerce arithmetic expression Null * Interval(MonthDayNano) to valid types                             | SELECT ((CAST('1900-01-01 00:00:00' AS TIMESTAMP) + NULL * INTERVAL '1 DAY') + 1 * 3 * INTERVAL '1 MONTH') AS "TEMP(Test)(2232502461)(0)"                                                            |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | HAVING (COUNT(1) > 0)                                                                                                                                                                                |
| 92          | Failed to execute query: Error during planning: Cannot coerce arithmetic expression Null * Interval(MonthDayNano) to valid types    | SELECT (1 + CAST(EXTRACT(DOW FROM (CAST('1900-01-01 00:00:00' AS TIMESTAMP) + NULL * INTERVAL '1 DAY')) AS INTEGER)) AS "TEMP(Test)(3556637072)(0)"                                                  |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | HAVING (COUNT(1) > 0)                                                                                                                                                                                |
| 66          | Error during planning: Cannot coerce arithmetic expression Int64 * Interval(MonthDayNano) to valid types                            | SELECT ("calcs"."date0" - (EXTRACT(EPOCH FROM (CAST(("calcs"."date1" - 1 * INTERVAL '1 DAY') AS TIMESTAMP) - "calcs"."date2")) / (60.0 * 60 * 24)) * INTERVAL '1 DAY') AS "TEMP(Test)(750868662)(0)" |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY ("calcs"."date0" - (EXTRACT(EPOCH FROM (CAST(("calcs"."date1" - 1 * INTERVAL '1 DAY') AS TIMESTAMP) - "calcs"."date2")) / (60.0 * 60 * 24)) * INTERVAL '1 DAY')                             |
| 14          | Error during planning: Cannot coerce arithmetic expression Float64 * Interval(MonthDayNano) to valid types                          | SELECT ("calcs"."date0" + "calcs"."num4" * INTERVAL '1 DAY') AS "TEMP(Test)(1817739360)(0)"                                                                                                          |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY ("calcs"."date0" + "calcs"."num4" * INTERVAL '1 DAY')                                                                                                                                       |
| 8           | Failed to execute query: Error during planning: Cannot coerce arithmetic expression Float64 * Interval(MonthDayNano) to valid types | SELECT CAST((DATE_TRUNC( 'day', CAST("calcs"."date2" AS DATE) ) + (-EXTRACT(DOW FROM "calcs"."date2") * INTERVAL '1 DAY')) AS DATE) AS "TEMP(Test)(1630131013)(0)"                                   |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY CAST((DATE_TRUNC( 'day', CAST("calcs"."date2" AS DATE) ) + (-EXTRACT(DOW FROM "calcs"."date2") * INTERVAL '1 DAY')) AS DATE)                                                                |
| 4           | This feature is not implemented: Unsupported SQL binary operator PGExp                                                              | SELECT ("calcs"."int2"^2) AS "TEMP(Test)(3898674109)(0)"                                                                                                                                             |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY ("calcs"."int2"^2)                                                                                                                                                                          |
| 4           | Error during planning: Invalid function 'sign'.                                                                                     | SELECT CAST(SIGN("calcs"."int2") AS SMALLINT) AS "TEMP(Test)(3509671532)(0)"                                                                                                                         |
|             | Did you mean 'sin'?                                                                                                                 | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY CAST(SIGN("calcs"."int2") AS SMALLINT)                                                                                                                                                      |
| 2           | Failed to execute query: Error during planning: Cannot coerce arithmetic expression Int64 * Interval(MonthDayNano) to valid types   | SELECT CAST(TRUNC(EXTRACT(YEAR FROM ("calcs"."date0" + ((-(1 + CAST(EXTRACT(DOW FROM "calcs"."date0") AS INTEGER))) + 1) * INTERVAL '1 DAY'))) AS INTEGER) AS "TEMP(Test)(1308221269)(0)"            |
|             |                                                                                                                                     | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | GROUP BY CAST(TRUNC(EXTRACT(YEAR FROM ("calcs"."date0" + ((-(1 + CAST(EXTRACT(DOW FROM "calcs"."date0") AS INTEGER))) + 1) * INTERVAL '1 DAY'))) AS INTEGER)                                         |
| 2           | Error during planning: Invalid function 'variance'.                                                                                 | SELECT VARIANCE("calcs"."num4") AS "TEMP(Test)(1358865)(0)"                                                                                                                                          |
|             | Did you mean 'range'?                                                                                                               | FROM "testv1"."calcs" "calcs"                                                                                                                                                                        |
|             |                                                                                                                                     | HAVING (COUNT(1) > 0)                                                                                                                                                                                |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions