This is an automated email from the ASF dual-hosted git repository.
corgy pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 53db9c5dfe [Feature][Connector-V2] Support `` for the SQL To Paimon
converter (#10206)
53db9c5dfe is described below
commit 53db9c5dfe5c9c0b692810b807c4c7a07e104285
Author: zhangdonghao <[email protected]>
AuthorDate: Wed Jan 21 22:05:48 2026 +0800
[Feature][Connector-V2] Support `` for the SQL To Paimon converter (#10206)
---
.../converter/SqlToPaimonPredicateConverter.java | 14 +++++-------
.../source/converter/SqlToPaimonConverterTest.java | 26 ++++++++++++++++++++++
2 files changed, 32 insertions(+), 8 deletions(-)
diff --git
a/seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonPredicateConverter.java
b/seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonPredicateConverter.java
index 62070284af..5112cc19f6 100644
---
a/seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonPredicateConverter.java
+++
b/seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonPredicateConverter.java
@@ -74,7 +74,6 @@ import java.util.Objects;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.stream.IntStream;
public class SqlToPaimonPredicateConverter {
@@ -123,12 +122,11 @@ public class SqlToPaimonPredicateConverter {
}
}
- String[] columnNamesArray = columnNames.toArray(new String[0]);
projectionIndex =
- IntStream.range(0, columnNamesArray.length)
- .map(
- i -> {
- String fieldName = columnNamesArray[i];
+ columnNames.stream()
+ .mapToInt(
+ columnName -> {
+ String fieldName = columnName.replace("`",
"");
int index =
Arrays.asList(fieldNames).indexOf(fieldName);
if (index == -1) {
throw new IllegalArgumentException(
@@ -360,7 +358,7 @@ public class SqlToPaimonPredicateConverter {
RowType rowType, String columnName, Object
jsqlParserDataTypeValue) {
Optional<DataField> theFiled =
rowType.getFields().stream()
- .filter(field ->
field.name().equalsIgnoreCase(columnName))
+ .filter(field ->
field.name().equalsIgnoreCase(columnName.replace("`", "")))
.findFirst();
String strValue = jsqlParserDataTypeValue.toString();
if (theFiled.isPresent()) {
@@ -424,7 +422,7 @@ public class SqlToPaimonPredicateConverter {
}
private static int getColumnIndex(PredicateBuilder builder, Column column)
{
- int index = builder.indexOf(column.getColumnName());
+ int index = builder.indexOf(column.getColumnName().replace("`", ""));
if (index == -1) {
throw new IllegalArgumentException(
String.format("The column named [%s] is not exists",
column.getColumnName()));
diff --git
a/seatunnel-connectors-v2/connector-paimon/src/test/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonConverterTest.java
b/seatunnel-connectors-v2/connector-paimon/src/test/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonConverterTest.java
index 9c0bfcd6a6..dbee8e52cc 100644
---
a/seatunnel-connectors-v2/connector-paimon/src/test/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonConverterTest.java
+++
b/seatunnel-connectors-v2/connector-paimon/src/test/java/org/apache/seatunnel/connectors/seatunnel/paimon/source/converter/SqlToPaimonConverterTest.java
@@ -318,4 +318,30 @@ public class SqlToPaimonConverterTest {
dynamicOptions.get("incremental-between-timestamp"));
assertEquals("my-tag", dynamicOptions.get("scan.tag-name"));
}
+
+ @Test
+ public void testPiamonQuoteIdentifier() {
+ String query =
+ "SELECT `decimal_col`, `int_col`, `char_col`, `timestamp_col`,
`boolean_col`, time_col FROM table WHERE int_col > 3 OR `double_col` < 6.6 ";
+
+ PlainSelect plainSelect = convertToPlainSelect(query);
+ assertNotNull(plainSelect);
+
+ int[] fieldIndex =
+
SqlToPaimonPredicateConverter.convertSqlSelectToPaimonProjectionIndex(
+ rowType.getFieldNames().toArray(new String[0]),
plainSelect);
+ assertNotNull(fieldIndex);
+ assertEquals(6, fieldIndex.length);
+ assertEquals(4, fieldIndex[0]);
+ assertEquals(7, fieldIndex[1]);
+ assertEquals(0, fieldIndex[2]);
+ assertEquals(12, fieldIndex[3]);
+ assertEquals(2, fieldIndex[4]);
+ assertEquals(13, fieldIndex[5]);
+
+ Predicate predicate =
+ SqlToPaimonPredicateConverter.convertSqlWhereToPaimonPredicate(
+ rowType, plainSelect);
+ assertNotNull(predicate);
+ }
}