[
https://issues.apache.org/jira/browse/HIVE-30136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hemanth Umashankar updated HIVE-30136:
--------------------------------------
Summary: Fix vectorized LEAD/LAG literal defaults for DOUBLE/DECIMAL (was:
Vectorized LEAD/LAG uses wrong constant for DOUBLE/DECIMAL literal default
(reads long 0))
> Fix vectorized LEAD/LAG literal defaults for DOUBLE/DECIMAL
> -----------------------------------------------------------
>
> Key: HIVE-30136
> URL: https://issues.apache.org/jira/browse/HIVE-30136
> Project: Hive
> Issue Type: Bug
> Reporter: Hemanth Umashankar
> Priority: Major
>
> With vectorization enabled, LAG/LEAD(..., ..., <double literal>) returns 0.0
> on rows that need the default (e.g. first row per partition for LAG offset
> 1). With vectorization disabled, the same query returns the correct default.
> Suspected cause: VectorPTFEvaluatorAbstractLeadLag.initDefaultValue() always
> uses ConstantVectorExpression.getLongValue(); double literals use
> doubleValue, so longValue is 0.
> Repro:
> CREATE TABLE lag_default_repro (
> region STRING,
> sale_id INT,
> amount DOUBLE
> );
> INSERT INTO lag_default_repro VALUES
> ('east', 1, 10.0),
> ('east', 2, 20.0),
> ('west', 1, 100.0);
> SET hive.vectorized.execution.enabled=false;
> SELECT
> region,
> sale_id,
> amount,
> LAG(amount, 1, 2.5) OVER (PARTITION BY region ORDER BY sale_id) AS
> prev_amount_or_default
> FROM lag_default_repro
> ORDER BY region, sale_id;
> SET hive.vectorized.execution.enabled=true;
> SELECT
> region,
> sale_id,
> amount,
> LAG(amount, 1, 2.5) OVER (PARTITION BY region ORDER BY sale_id) AS
> prev_amount_or_default
> FROM lag_default_repro
> ORDER BY region, sale_id;
--
This message was sent by Atlassian Jira
(v8.20.10#820010)