diff --git a/fe/fe-core/pom.xml b/fe/fe-core/pom.xml
index 0375db287e6e21..784517929fcc36 100644
--- a/fe/fe-core/pom.xml
+++ b/fe/fe-core/pom.xml
@@ -518,6 +518,12 @@ under the License.
hadoop-auth
+
+ com.dmetasoul
+ lakesoul-common
+ 2.4.0-SNAPSHOT
+
+
org.apache.iceberg
iceberg-core
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
index 0abeaa0886f799..b351730e8790ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
@@ -252,7 +252,7 @@ enum TableType {
MYSQL, ODBC, OLAP, SCHEMA, INLINE_VIEW, VIEW, BROKER, ELASTICSEARCH, HIVE, ICEBERG, @Deprecated HUDI, JDBC,
TABLE_VALUED_FUNCTION, HMS_EXTERNAL_TABLE, ES_EXTERNAL_TABLE, MATERIALIZED_VIEW, JDBC_EXTERNAL_TABLE,
ICEBERG_EXTERNAL_TABLE, TEST_EXTERNAL_TABLE, PAIMON_EXTERNAL_TABLE, MAX_COMPUTE_EXTERNAL_TABLE,
- HUDI_EXTERNAL_TABLE;
+ HUDI_EXTERNAL_TABLE, DELTALAKE_EXTERNAL_TABLE, LAKESOUl_EXTERNAL_TABLE;
public String toEngineName() {
switch (this) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InitCatalogLog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InitCatalogLog.java
index dd30fbf43c95ac..e360b88496ecc8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InitCatalogLog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InitCatalogLog.java
@@ -40,6 +40,7 @@ public enum Type {
PAIMON,
MAX_COMPUTE,
HUDI,
+ LAKESOUL,
TEST,
UNKNOWN;
}
diff --git a/gensrc/thrift/Descriptors.thrift b/gensrc/thrift/Descriptors.thrift
index 2e3831903cc02b..43b6156d370817 100644
--- a/gensrc/thrift/Descriptors.thrift
+++ b/gensrc/thrift/Descriptors.thrift
@@ -336,6 +336,12 @@ struct TMCTable {
6: optional string public_access
}
+struct TLakeSoulTable {
+ 1: required string db_name
+ 2: required string table_name
+ 3: required map properties
+}
+
// "Union" of all table types.
struct TTableDescriptor {
1: required Types.TTableId id
@@ -359,6 +365,7 @@ struct TTableDescriptor {
19: optional THudiTable hudiTable
20: optional TJdbcTable jdbcTable
21: optional TMCTable mcTable
+ 22: optional TLakeSoulTable lakesoulTable
}
struct TDescriptorTable {
diff --git a/gensrc/thrift/PlanNodes.thrift b/gensrc/thrift/PlanNodes.thrift
index 09e3f4788d61bb..b327d0eeea442c 100644
--- a/gensrc/thrift/PlanNodes.thrift
+++ b/gensrc/thrift/PlanNodes.thrift
@@ -329,6 +329,13 @@ struct THudiFileDesc {
10: optional list nested_fields;
}
+struct TLakeSoulFileDesc {
+ 1: optional string base_path;
+ 2: optional i64 data_file_length;
+ 3: optional list column_names;
+ 4: optional list column_types;
+}
+
struct TTransactionalHiveDeleteDeltaDesc {
1: optional string directory_location
2: optional list file_names
@@ -346,6 +353,7 @@ struct TTableFormatFileDesc {
4: optional TPaimonFileDesc paimon_params
5: optional TTransactionalHiveDesc transactional_hive_params
6: optional TMaxComputeFileDesc max_compute_params
+ 7: optional TLakeSoulFileDesc lakesoul_params
}
enum TTextSerdeType {