This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new e572788bb8f [Fix](iceberg) Fix static partition INSERT OVERWRITE with
VALUES clause column count validation (#59951)
e572788bb8f is described below
commit e572788bb8fbc6acb7f18cc8f83afa1ff246d79c
Author: Socrates <[email protected]>
AuthorDate: Mon Jan 19 09:57:59 2026 +0800
[Fix](iceberg) Fix static partition INSERT OVERWRITE with VALUES clause
column count validation (#59951)
- Related Pr: #58396
### What problem does this PR solve?
Related: #58396
## Problem
When using `INSERT OVERWRITE` with static partition syntax and `VALUES`
clause, the operation incorrectly failed with:
```
Column count doesn't match value count. Expected: N, but got: M
```
### Example that was failing:
```sql
-- Table has 2 columns: id (int), par (string) - partitioned by par
INSERT OVERWRITE TABLE test_partition_branch
PARTITION (par='a')
VALUES (11), (12);
```
**Error**: Column count doesn't match value count. Expected: 2, but got:
1
### Root Cause
The column count validation in `InsertUtils.normalizePlan()` did not
account for static partition columns. When using `PARTITION
(col='value')` syntax:
- The partition column value is **already fixed** in the PARTITION
clause
- The VALUES should **only provide non-partition column values**
- This is standard SQL behavior (Hive, Iceberg, etc.)
The validation was comparing VALUES count against **all** table columns
instead of **non-partition** columns only.
## Solution
Modified `InsertUtils.java:363-372` to:
1. Detect when the sink is `UnboundIcebergTableSink`
2. Extract static partition columns from `staticPartitionKeyValues`
3. Filter out static partition columns from the column list before
validation
4. Only compare VALUES count against non-partition columns
```java
if (unboundLogicalSink instanceof UnboundIcebergTableSink
&& CollectionUtils.isEmpty(unboundLogicalSink.getColNames())) {
UnboundIcebergTableSink<?> icebergSink = (UnboundIcebergTableSink<?>)
unboundLogicalSink;
Map<String, Expression> staticPartitions =
icebergSink.getStaticPartitionKeyValues();
if (staticPartitions != null && !staticPartitions.isEmpty()) {
Set<String> staticPartitionColNames = staticPartitions.keySet();
columns = columns.stream()
.filter(column ->
!staticPartitionColNames.contains(column.getName()))
.collect(ImmutableList.toImmutableList());
}
}
```
---
.../trees/plans/commands/insert/InsertUtils.java | 12 +
.../test_iceberg_static_partition_overwrite.out | 49 +++-
.../test_iceberg_static_partition_overwrite.groovy | 275 +++++++++++++++++++--
3 files changed, 310 insertions(+), 26 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
index a1f7c2130ed..4ee95b21683 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertUtils.java
@@ -97,6 +97,7 @@ import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -362,6 +363,17 @@ public class InsertUtils {
ImmutableList.Builder<List<NamedExpression>> optimizedRowConstructors
=
ImmutableList.builderWithExpectedSize(unboundInlineTable.getConstantExprsList().size());
List<Column> columns = table.getBaseSchema(false);
+ if (unboundLogicalSink instanceof UnboundIcebergTableSink
+ && CollectionUtils.isEmpty(unboundLogicalSink.getColNames())) {
+ UnboundIcebergTableSink<?> icebergSink =
(UnboundIcebergTableSink<?>) unboundLogicalSink;
+ Map<String, Expression> staticPartitions =
icebergSink.getStaticPartitionKeyValues();
+ if (staticPartitions != null && !staticPartitions.isEmpty()) {
+ Set<String> staticPartitionColNames =
staticPartitions.keySet();
+ columns = columns.stream()
+ .filter(column ->
!staticPartitionColNames.contains(column.getName()))
+ .collect(ImmutableList.toImmutableList());
+ }
+ }
ConnectContext context = ConnectContext.get();
ExpressionRewriteContext rewriteContext = null;
diff --git
a/regression-test/data/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.out
b/regression-test/data/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.out
index 58cd1fa5ca4..e65ce5de03b 100644
---
a/regression-test/data/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.out
+++
b/regression-test/data/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.out
@@ -113,22 +113,65 @@
3 Charlie 2025-01-26T10:00 bj
-- !q17 --
+10 Eve 2025-01-25 bj
+2 Bob 2025-01-25 sh
+3 Charlie 2025-01-26 bj
+
+-- !q18 --
+10 Eve 2025-01-25 bj
+11 Frank 2025-01-25 bj
+12 Grace 2025-01-25 bj
+2 Bob 2025-01-25 sh
+3 Charlie 2025-01-26 bj
+
+-- !q19 --
+10 Eve 100.50 true 95.5 3
+2 Bob 100.50 false 90.0 2
+3 Charlie 200.75 true 75.5 1
+
+-- !q20 --
+2 Bob 2025-01-25 sh
+3 Charlie 2025-01-26 bj
+
+-- !q21 --
+10 Eve 2025-01-25 bj
+20 Frank 2025-01-25 sh
+3 Charlie 2025-01-26 bj
+
+-- !q22 --
+10 Eve 1706140800000
+2 Bob 1706227200000
+3 Charlie 1706313600000
+
+-- !q23 --
+10 Eve 2025-01-25T10:00 food
+2 Bob 2025-01-25T10:00 drink
+3 Charlie 2025-01-26T11:00 food
+
+-- !q24 --
+10 Eve 2025-01-25 bj 99.99
+11 Frank 2025-01-25 bj 88.88
+12 Grace 2025-01-25 bj 77.77
+2 Bob 2025-01-25 sh 200.75
+3 Charlie 2025-01-26 bj 150.25
+
+-- !q25 --
10 Eve 100.50
2 Bob 200.75
3 Charlie 300.25
--- !q18 --
+-- !q26 --
10 Eve 100.50 10
11 Frank 100.50 20
3 Charlie 200.75 10
--- !q19 --
+-- !q27 --
10 Eve 1 85.5 true A
2 Bob 1 85.5 true B
3 Charlie 2 90.0 false A
4 David 1 85.5 false A
--- !q20 --
+-- !q28 --
10 Eve 1 85.5 true A
11 Frank 1 85.5 false B
4 David 2 90.0 true A
diff --git
a/regression-test/suites/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.groovy
b/regression-test/suites/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.groovy
index d79093b69bf..fadd5a25c65 100644
---
a/regression-test/suites/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.groovy
+++
b/regression-test/suites/external_table_p0/iceberg/write/test_iceberg_static_partition_overwrite.groovy
@@ -601,14 +601,243 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
(3, 'Charlie', '2025-01-26 10:00:00', 'bj')
"""
sql """
- INSERT OVERWRITE TABLE ${tb1}
+ INSERT OVERWRITE TABLE ${tb1}
PARTITION (ts='2025-01-25 10:00:00')
SELECT id, name, region FROM ${tb_ts_src}
"""
order_qt_q16 """ SELECT * FROM ${tb1} ORDER BY id """
sql """ DROP TABLE IF EXISTS ${tb_ts_src} """
- // Test Case 17: Static partition with DECIMAL type
+ //
============================================================================
+ // Test Cases for static partition overwrite with VALUES clause
+ //
============================================================================
+
+ // Test Case 17: Basic static partition overwrite with single VALUE
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ dt DATE,
+ region STRING
+ ) ENGINE=iceberg
+ PARTITION BY LIST (dt, region) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25', 'bj'),
+ (2, 'Bob', '2025-01-25', 'sh'),
+ (3, 'Charlie', '2025-01-26', 'bj')
+ """
+ // Overwrite with single VALUE
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ (id, name) VALUES (10, 'Eve')
+ """
+ order_qt_q17 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 18: Static partition overwrite with multiple VALUES
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ dt DATE,
+ region STRING
+ ) ENGINE=iceberg
+ PARTITION BY LIST (dt, region) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25', 'bj'),
+ (2, 'Bob', '2025-01-25', 'sh'),
+ (3, 'Charlie', '2025-01-26', 'bj')
+ """
+ // Overwrite with multiple VALUES
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ (id, name) VALUES
+ (10, 'Eve'),
+ (11, 'Frank'),
+ (12, 'Grace')
+ """
+ order_qt_q18 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 19: Static partition overwrite with VALUES and different data
types
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ amount DECIMAL(10,2),
+ is_active BOOLEAN,
+ score FLOAT,
+ level INT
+ ) ENGINE=iceberg
+ PARTITION BY LIST (amount, is_active) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', 100.50, true, 85.5, 1),
+ (2, 'Bob', 100.50, false, 90.0, 2),
+ (3, 'Charlie', 200.75, true, 75.5, 1)
+ """
+ // Overwrite with VALUES containing multiple data types
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (amount=100.50, is_active=true)
+ VALUES (10, 'Eve', 95.5, 3)
+ """
+ order_qt_q19 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 20: Static partition overwrite with empty VALUES (delete
partition)
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ dt DATE,
+ region STRING
+ ) ENGINE=iceberg
+ PARTITION BY LIST (dt, region) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25', 'bj'),
+ (2, 'Bob', '2025-01-25', 'sh'),
+ (3, 'Charlie', '2025-01-26', 'bj')
+ """
+ // Delete partition by overwriting with empty VALUES (should handle
gracefully)
+ // Note: This behavior depends on implementation - empty VALUES might not
be allowed
+ // Alternative: Use VALUES with a condition that yields no results
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ SELECT id, name FROM ${tb1} WHERE 1=0
+ """
+ test {
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ select * from ${tb1} where 1=0
+ """
+ exception "Expected 2 columns but got 4"
+ }
+
+ order_qt_q20 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 21: Multiple partitions with different VALUES
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ dt DATE,
+ region STRING
+ ) ENGINE=iceberg
+ PARTITION BY LIST (dt, region) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25', 'bj'),
+ (2, 'Bob', '2025-01-25', 'sh'),
+ (3, 'Charlie', '2025-01-26', 'bj')
+ """
+ // Overwrite first partition
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ VALUES (10, 'Eve')
+ """
+ // Overwrite second partition
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='sh')
+ VALUES (20, 'Frank')
+ """
+ order_qt_q21 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 22: Static partition overwrite with VALUES containing LONG
timestamp
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ timestamp_val BIGINT
+ ) ENGINE=iceberg
+ PARTITION BY LIST (timestamp_val) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', 1706140800000),
+ (2, 'Bob', 1706227200000),
+ (3, 'Charlie', 1706313600000)
+ """
+ // Overwrite with VALUES containing LONG type
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (timestamp_val=1706140800000)
+ VALUES (10, 'Eve')
+ """
+ order_qt_q22 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 23: Static partition overwrite with VALUES containing DATETIME
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ ts DATETIME,
+ category STRING
+ ) ENGINE=iceberg
+ PARTITION BY LIST (ts, category) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25 10:00:00', 'food'),
+ (2, 'Bob', '2025-01-25 10:00:00', 'drink'),
+ (3, 'Charlie', '2025-01-26 11:00:00', 'food')
+ """
+ // Overwrite with VALUES containing DATETIME type
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (ts='2025-01-25 10:00:00', category='food')
+ VALUES (10, 'Eve')
+ """
+ order_qt_q23 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 24: Static partition overwrite with VALUES - multiple rows
with different types
+ sql """ DROP TABLE IF EXISTS ${tb1} """
+ sql """
+ CREATE TABLE ${tb1} (
+ id BIGINT,
+ name STRING,
+ dt DATE,
+ region STRING,
+ amount DECIMAL(10,2)
+ ) ENGINE=iceberg
+ PARTITION BY LIST (dt, region) ()
+ """
+ sql """
+ INSERT INTO ${tb1} VALUES
+ (1, 'Alice', '2025-01-25', 'bj', 100.50),
+ (2, 'Bob', '2025-01-25', 'sh', 200.75),
+ (3, 'Charlie', '2025-01-26', 'bj', 150.25)
+ """
+ // Overwrite with multiple VALUES containing DECIMAL type
+ sql """
+ INSERT OVERWRITE TABLE ${tb1}
+ PARTITION (dt='2025-01-25', region='bj')
+ VALUES
+ (10, 'Eve', 99.99),
+ (11, 'Frank', 88.88),
+ (12, 'Grace', 77.77)
+ """
+ order_qt_q24 """ SELECT * FROM ${tb1} ORDER BY id """
+
+ // Test Case 25: Static partition with DECIMAL type
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -625,13 +854,13 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
(3, 'Charlie', 300.25)
"""
sql """
- INSERT OVERWRITE TABLE ${tb1}
+ INSERT OVERWRITE TABLE ${tb1}
PARTITION (amount=100.50)
SELECT 10, 'Eve'
"""
- order_qt_q17 """ SELECT * FROM ${tb1} ORDER BY id """
+ order_qt_q25 """ SELECT * FROM ${tb1} ORDER BY id """
- // Test Case 18: Hybrid mode with DECIMAL type (static) + INTEGER (dynamic)
+ // Test Case 26: Hybrid mode with DECIMAL type (static) + INTEGER (dynamic)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -663,14 +892,14 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
(3, 'Charlie', 200.75, 10)
"""
sql """
- INSERT OVERWRITE TABLE ${tb1}
+ INSERT OVERWRITE TABLE ${tb1}
PARTITION (amount=100.50)
SELECT id, name, quantity FROM ${tb_decimal_src}
"""
- order_qt_q18 """ SELECT * FROM ${tb1} ORDER BY id """
+ order_qt_q26 """ SELECT * FROM ${tb1} ORDER BY id """
sql """ DROP TABLE IF EXISTS ${tb_decimal_src} """
- // Test Case 19: Multiple types in static partition (INTEGER, FLOAT,
BOOLEAN, STRING)
+ // Test Case 27: Multiple types in static partition (INTEGER, FLOAT,
BOOLEAN, STRING)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -691,13 +920,13 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
(4, 'David', 1, 85.5, false, 'A')
"""
sql """
- INSERT OVERWRITE TABLE ${tb1}
+ INSERT OVERWRITE TABLE ${tb1}
PARTITION (level=1, score=85.5, is_active=true, category='A')
SELECT 10, 'Eve'
"""
- order_qt_q19 """ SELECT * FROM ${tb1} ORDER BY id """
+ order_qt_q27 """ SELECT * FROM ${tb1} ORDER BY id """
- // Test Case 20: Hybrid mode with multiple types (2 static + 2 dynamic)
+ // Test Case 28: Hybrid mode with multiple types (2 static + 2 dynamic)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -733,18 +962,18 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
(4, 'David', 2, 90.0, true, 'A')
"""
sql """
- INSERT OVERWRITE TABLE ${tb1}
+ INSERT OVERWRITE TABLE ${tb1}
PARTITION (level=1, score=85.5)
SELECT id, name, is_active, category FROM ${tb_multi_src}
"""
- order_qt_q20 """ SELECT * FROM ${tb1} ORDER BY id """
+ order_qt_q28 """ SELECT * FROM ${tb1} ORDER BY id """
sql """ DROP TABLE IF EXISTS ${tb_multi_src} """
//
============================================================================
// Test Cases for non-identity partition transforms - static partition
overwrite should fail
//
============================================================================
- // Test Case 21: Error scenario - bucket partition (non-identity transform)
+ // Test Case 29: Error scenario - bucket partition (non-identity transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -777,7 +1006,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 22: Error scenario - truncate partition (non-identity
transform)
+ // Test Case 30: Error scenario - truncate partition (non-identity
transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -810,7 +1039,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 23: Error scenario - day partition (non-identity time
transform)
+ // Test Case 31: Error scenario - day partition (non-identity time
transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -843,7 +1072,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 24: Error scenario - year partition (non-identity time
transform)
+ // Test Case 32: Error scenario - year partition (non-identity time
transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -876,7 +1105,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 25: Error scenario - month partition (non-identity time
transform)
+ // Test Case 33: Error scenario - month partition (non-identity time
transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -909,7 +1138,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 26: Error scenario - hour partition (non-identity time
transform)
+ // Test Case 34: Error scenario - hour partition (non-identity time
transform)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -942,7 +1171,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 27: Error scenario - mixed identity and non-identity
partitions (bucket)
+ // Test Case 35: Error scenario - mixed identity and non-identity
partitions (bucket)
// Table has identity partition (region) + non-identity partition (bucket
on id)
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
@@ -977,7 +1206,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 28: Error scenario - truncate on integer column
+ // Test Case 36: Error scenario - truncate on integer column
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -1010,7 +1239,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 29: Error scenario - bucket on BIGINT column
+ // Test Case 37: Error scenario - bucket on BIGINT column
sql """ DROP TABLE IF EXISTS ${tb1} """
sql """
CREATE TABLE ${tb1} (
@@ -1043,7 +1272,7 @@ suite("test_iceberg_static_partition_overwrite",
"p0,external,iceberg,external_d
exception "Cannot use static partition syntax for non-identity
partition field"
}
- // Test Case 30: Mixed partitions - identity column is OK, but
non-identity should fail
+ // Test Case 38: Mixed partitions - identity column is OK, but
non-identity should fail
// Test that specifying only identity partition columns works,
// but including non-identity columns fails
sql """ DROP TABLE IF EXISTS ${tb1} """
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]