Stamatis Zampetakis created HIVE-27919:
------------------------------------------
Summary: Constant reduction in CBO does not work for
FROM_UNIXTIME, DATE_ADD, DATE_SUB
Key: HIVE-27919
URL: https://issues.apache.org/jira/browse/HIVE-27919
Project: Hive
Issue Type: Improvement
Components: CBO
Affects Versions: 4.0.0-beta-1
Reporter: Stamatis Zampetakis
Assignee: Stamatis Zampetakis
Constant reduction (aka. constant folding) does not work in CBO for
FROM_UNIXTIME, DATE_ADD, and DATE_SUB functions.
Below, we outline the result of EXPLAIN CBO and plain EXPLAIN using some
trivial constant inputs. Notice, that constant reduction is not present in the
CBO plan but it is applied later on by the physical optimizer.
{code:sql}
SELECT FROM_UNIXTIME(1701088643)
{code}
{noformat}
CBO PLAN:
HiveProject(_o__c0=[FROM_UNIXTIME(1701088643)])
HiveTableScan(table=[[_dummy_database, _dummy_table]],
table:alias=[_dummy_table])
STAGE PLANS:
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
TableScan
alias: _dummy_table
Row Limit Per Split: 1
Select Operator
expressions: '2023-11-27 04:37:23' (type: string)
outputColumnNames: _col0
ListSink
{noformat}
{code:sql}
SELECT DATE_ADD('2023-01-01', 1)
{code}
{noformat}
CBO PLAN:
HiveProject(_o__c0=[DATE_ADD(_UTF-16LE'2023-01-01':VARCHAR(2147483647)
CHARACTER SET "UTF-16LE", 1)])
HiveTableScan(table=[[_dummy_database, _dummy_table]],
table:alias=[_dummy_table])
STAGE PLANS:
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
TableScan
alias: _dummy_table
Row Limit Per Split: 1
Select Operator
expressions: DATE'2023-01-02' (type: date)
outputColumnNames: _col0
ListSink
{noformat}
{code:sql}
SELECT DATE_SUB('2023-01-01', 1)
{code}
{noformat}
CBO PLAN:
HiveProject(_o__c0=[DATE_SUB(_UTF-16LE'2023-01-01':VARCHAR(2147483647)
CHARACTER SET "UTF-16LE", 1)])
HiveTableScan(table=[[_dummy_database, _dummy_table]],
table:alias=[_dummy_table])
STAGE PLANS:
Stage: Stage-0
Fetch Operator
limit: -1
Processor Tree:
TableScan
alias: _dummy_table
Row Limit Per Split: 1
Select Operator
expressions: DATE'2022-12-31' (type: date)
outputColumnNames: _col0
ListSink
{noformat}
The reason is that all the functions at the moment extend
{{SqlAbstractTimeFunction}} which is declared as a dynamic function and by
default prevents constant folding.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)