[
https://issues.apache.org/jira/browse/IMPALA-7020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17134523#comment-17134523
]
Tim Armstrong commented on IMPALA-7020:
---------------------------------------
This is sufficient to force it to be materialised:
{noformat}
tarmstrong@tarmstrong-box2:~/Impala/impala$ git diff
diff --git a/fe/src/main/java/org/apache/impala/analysis/Expr.java
b/fe/src/main/java/org/apache/impala/analysis/Expr.java
index 6ef5715a2..c636b4971 100644
--- a/fe/src/main/java/org/apache/impala/analysis/Expr.java
+++ b/fe/src/main/java/org/apache/impala/analysis/Expr.java
@@ -83,7 +83,7 @@ abstract public class Expr extends TreeNode<Expr> implements
ParseNode, Cloneabl
public static final float ARITHMETIC_OP_COST = 1;
public static final float BINARY_PREDICATE_COST = 1;
public static final float VAR_LEN_BINARY_PREDICATE_COST = 5;
- public static final float CAST_COST = 1;
+ public static final float CAST_COST = 20;
public static final float COMPOUND_PREDICATE_COST = 1;
public static final float FUNCTION_CALL_COST = 10;
public static final float IS_NOT_EMPTY_COST = 1;
{noformat}
> Order by expressions in Analytical functions are not materialized causing
> slowdown
> ----------------------------------------------------------------------------------
>
> Key: IMPALA-7020
> URL: https://issues.apache.org/jira/browse/IMPALA-7020
> Project: IMPALA
> Issue Type: Improvement
> Components: Frontend
> Affects Versions: Impala 2.12.0
> Reporter: Mostafa Mokhtar
> Assignee: Tim Armstrong
> Priority: Major
> Labels: performance
> Attachments: Slow case profile.txt, Workaround profile.txt
>
>
> Order by expressions in Analytical functions are not materialized and cause
> queries to run much slower.
> The rewrite for the query below is 20x faster, profiles attached.
> Repro
> {code}
> select *
> FROM
> (
> SELECT
> o.*,
> ROW_NUMBER() OVER(ORDER BY evt_ts DESC) AS rn
> FROM
> (
> SELECT
> l_orderkey,l_partkey,l_linenumber,l_quantity, cast (l_shipdate as
> string) evt_ts
> FROM
> lineitem
> WHERE
> l_shipdate BETWEEN '1992-01-01 00:00:00' AND '1992-01-15 00:00:00'
> ) o
> ) r
> WHERE
> rn BETWEEN 1 AND 101
> ORDER BY rn;
> {code}
> Workaround
> {code}
> select *
> FROM
> (
> SELECT
> o.*,
> ROW_NUMBER() OVER(ORDER BY evt_ts DESC) AS rn
> FROM
> (
> SELECT
> l_orderkey,l_partkey,l_linenumber,l_quantity, cast (l_shipdate as
> string) evt_ts
> FROM
> lineitem
> WHERE
> l_shipdate BETWEEN '1992-01-01 00:00:00' AND '1992-01-15 00:00:00'
> union all
> SELECT
> l_orderkey,l_partkey,l_linenumber,l_quantity, cast (l_shipdate as
> string) evt_ts
> FROM
> lineitem limit 0
>
> ) o
> ) r
> WHERE
> rn BETWEEN 1 AND 101
> ORDER BY rn;
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]