You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/03/08 15:21:00 UTC
[jira] [Work logged] (IMPALA-7618) Kudu table Create/Alter syntax should accept 'VALUES <= '
[ 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: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org