[
https://issues.apache.org/jira/browse/IMPALA-7618?focusedWorklogId=1008409&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1008409
]
ASF GitHub Bot logged work on IMPALA-7618:
------------------------------------------
Author: ASF GitHub Bot
Created on: 08/Mar/26 15:20
Start Date: 08/Mar/26 15:20
Worklog Time Spent: 10m
Work Description: Kino1994 opened a new pull request, #87:
URL: https://github.com/apache/impala/pull/87
## Summary
- The SQL parser only accepted `<` and `<=` operators in Kudu range
partition bounds, rejecting logically equivalent forms like `VALUES >= X` and
`X > VALUES`. This created an inconsistency where `SHOW RANGE PARTITIONS`
displayed bounds using `>=` notation that couldn't be used in DDL statements
(`CREATE TABLE`, `ALTER TABLE ADD/DROP RANGE PARTITION`).
- Adds `>` and `>=` alternatives to the `opt_lower_range_val` and
`opt_upper_range_val` grammar rules, with a new `RangeBound` class carrying a
`reversed` flag so bounds are normalized (swapped to the correct semantic
position) during AST construction.
- Both reversed and canonical forms now produce identical internal
`RangePartition` representations, ensuring consistent behavior across DDL
input, internal representation, and `SHOW RANGE PARTITIONS` display output.
## Test plan
- [ ] New parser tests in `ParserTest.java` verify `VALUES >= expr`, `VALUES
> expr`, `expr >= VALUES`, `expr > VALUES` parse successfully for `CREATE
TABLE`, `ALTER TABLE ADD`, and `ALTER TABLE DROP` with single and multi-column
tuples.
- [ ] New analyzer tests in `AnalyzeKuduDDLTest.java` verify reversed forms
pass full semantic analysis against Kudu table definitions.
- [ ] Existing parser and analyzer tests continue to pass, confirming
backward compatibility.
- [ ] Manual verification that `ALTER TABLE t ADD RANGE PARTITION VALUES >=
'2027-01-01'` and `ALTER TABLE t ADD RANGE PARTITION '2027-01-01' <= VALUES`
produce identical partitions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Issue Time Tracking
-------------------
Worklog Id: (was: 1008409)
Remaining Estimate: 0h
Time Spent: 10m
> Kudu table Create/Alter syntax should accept 'VALUES <= <lit>'
> --------------------------------------------------------------
>
> Key: IMPALA-7618
> URL: https://issues.apache.org/jira/browse/IMPALA-7618
> Project: IMPALA
> Issue Type: Bug
> Components: Frontend
> Affects Versions: Impala 2.2.0
> Reporter: Dan Burkert
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently Impala allows the {{PARTITION 200 <= VALUES}} syntax to specify an
> unbounded-above range partition in a Kudu table, but not {{PARTITION VALUES
> >= 200}}. Since these expressions are equivalent it would be nice if both
> were accepted.
>
> I would normally consider this an improvement and not a bug, however there is
> currently a mismatch between how Kudu pretty-prints these partitions and how
> Impala parses them. This mismatch makes it very likely that users will hit
> this issue and be stumped. For example:
>
> {code:java}
> > CREATE TABLE dan_test (a int, PRIMARY KEY (a))
> PARTITION BY RANGE (a) (
> PARTITION 0 <= VALUES < 100,
> PARTITION VALUES >= 200
> ) STORED AS KUDU;
> ERROR: AnalysisException: Syntax error in line 4:
> PARTITION VALUES >= 200
> ^
> Encountered: >
> Expected: COMMA
> CAUSED BY: Exception: Syntax error
> > CREATE TABLE dan_test (a int, PRIMARY KEY (a))
> PARTITION BY RANGE (a) (
> PARTITION 0 <= VALUES < 100,
> PARTITION 200 <= VALUES
> ) STORED AS KUDU;
> +-------------------------+
> | summary |
> +-------------------------+
> | Table has been created. |
> +-------------------------+
> Fetched 1 row(s) in 1.65s
> > SHOW RANGE PARTITIONS dan_test;
> +-------------------+
> | RANGE (a) |
> +-------------------+
> | 0 <= VALUES < 100 |
> | VALUES >= 200 |
> +-------------------+
> Fetched 2 row(s) in 3.73s
> > ALTER TABLE dan_test DROP RANGE PARTITION VALUES >= 100;
> Query: ALTER TABLE dan_test DROP RANGE PARTITION VALUES >= 100
> ERROR: AnalysisException: Syntax error in line 1:
> ALTER TABLE dan_test DROP RANGE PARTITION VALUES >= 100
> ^
> Encountered: >
> Expected: COMMA
> CAUSED BY: Exception: Syntax error
> > ALTER TABLE dan_test DROP RANGE PARTITION 100 <= VALUES;
> Query: ALTER TABLE dan_test DROP RANGE PARTITION 100 <= VALUES
> ERROR: ImpalaRuntimeException: Error dropping range partition in table
> dan_test
> CAUSED BY: NonRecoverableException: No range partition found for drop
> range partition step: VALUES >= 100
> > ALTER TABLE dan_test DROP RANGE PARTITION 200 <= VALUES;
> Query: ALTER TABLE dan_test DROP RANGE PARTITION 200 <= VALUES
> +-----------------------------------+
> | summary |
> +-----------------------------------+
> | Range partition has been dropped. |
> +-----------------------------------+
> Fetched 1 row(s) in 0.10s
> > SHOW PARTITIONS dan_test;
> Query: SHOW PARTITIONS dan_test
>
> +--------+-----------+----------+-----------------------------------+------------+
> | # Rows | Start Key | Stop Key | Leader Replica | #
> Replicas |
>
> +--------+-----------+----------+-----------------------------------+------------+
> | -1 | 80000000 | 80000064 | nightly6x-4.vpc.cloudera.com:7050 | 3
> |
>
> +--------+-----------+----------+-----------------------------------+------------+
> Fetched 1 row(s) in 0.04s{code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]