This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 98aeac63592aaa2a106887d62490669ed8c133fd
Author: yongkang.zhong <[email protected]>
AuthorDate: Wed Mar 15 20:37:36 2023 +0800

    [feature](multi-catalog) support sap hana jdbc catalog and jdbc external 
table (#17780)
---
 .../Create/CREATE-CATALOG.md                       | 74 ++++++++++++++-----
 .../Create/CREATE-CATALOG.md                       | 84 ++++++++++++++++------
 .../org/apache/doris/catalog/JdbcResource.java     |  5 +-
 .../java/org/apache/doris/catalog/JdbcTable.java   |  1 +
 .../java/org/apache/doris/catalog/OdbcTable.java   |  7 ++
 .../org/apache/doris/external/jdbc/JdbcClient.java | 74 +++++++++++++++++--
 .../org/apache/doris/planner/JdbcScanNode.java     |  3 +-
 gensrc/thrift/Types.thrift                         |  3 +-
 8 files changed, 201 insertions(+), 50 deletions(-)

diff --git 
a/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
 
b/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
index d530c2ced2..1f598bfd78 100644
--- 
a/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
+++ 
b/docs/en/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
@@ -124,6 +124,7 @@ CREATE CATALOG catalog_name PROPERTIES (
 
        ```sql
        -- 1.2.0+ Version
+       -- The first way 
        CREATE RESOURCE mysql_resource PROPERTIES (
                "type"="jdbc",
                "user"="root",
@@ -134,8 +135,18 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE msyql_resource;
 
-       -- 1.2.0 Version
+       -- The second way
        CREATE CATALOG jdbc PROPERTIES (
+               "type"="jdbc",
+               "user"="root",
+               "password"="123456",
+               "jdbc_url" = 
"jdbc:mysql://127.0.0.1:3316/doris_test?useSSL=false",
+               "driver_url" = 
"https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/jdbc_driver/mysql-connector-java-8.0.25.jar";,
+               "driver_class" = "com.mysql.cj.jdbc.Driver"
+       );
+       
+       -- 1.2.0 Version
+       CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
                "jdbc.user"="root",
                "jdbc.password"="123456",
@@ -159,21 +170,21 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE pg_resource;
 
-       -- The second way, note: keys have 'jdbc' prefix in front.
+       -- The second way
        CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
-               "jdbc.user"="postgres",
-               "jdbc.password"="123456",
-               "jdbc.jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/demo",
-               "jdbc.driver_url" = "file:/path/to/postgresql-42.5.1.jar",
-               "jdbc.driver_class" = "org.postgresql.Driver"
+               "user"="postgres",
+               "password"="123456",
+               "jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/demo",
+               "driver_url" = "file:///path/to/postgresql-42.5.1.jar",
+               "driver_class" = "org.postgresql.Driver"
        );
        ```
 
        **clickhouse**
 
        ```sql
-       -- 1.2.0+ Version
+       -- The first way
        CREATE RESOURCE clickhouse_resource PROPERTIES (
                "type"="jdbc",
                "user"="default",
@@ -184,11 +195,14 @@ CREATE CATALOG catalog_name PROPERTIES (
        )
        CREATE CATALOG jdbc WITH RESOURCE clickhouse_resource;
        
-       -- 1.2.0 Version
+       -- The second way
        CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
-               "jdbc.jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo",
-               ...
+               "user"="default",
+               "password"="123456",
+               "jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo",
+               "driver_url" = 
"file:///path/to/clickhouse-jdbc-0.3.2-patch11-all.jar",
+               "driver_class" = "com.clickhouse.jdbc.ClickHouseDriver"
        )
        ```
 
@@ -205,14 +219,14 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE oracle_resource;
 
-       -- The second way, note: keys have 'jdbc' prefix in front.
+       -- The second way
        CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
-               "jdbc.user"="doris",
-               "jdbc.password"="123456",
-               "jdbc.jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin",
-               "jdbc.driver_url" = "file:/path/to/ojdbc6.jar",
-               "jdbc.driver_class" = "oracle.jdbc.driver.OracleDriver"
+               "user"="doris",
+               "password"="123456",
+               "jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin",
+               "driver_url" = "file:///path/to/ojdbc6.jar",
+               "driver_class" = "oracle.jdbc.driver.OracleDriver"
        );      
        ```
 
@@ -229,7 +243,7 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG sqlserver_catlog WITH RESOURCE sqlserver_resource;
 
-       -- The second way, note: keys have 'jdbc' prefix in front.
+       -- The second way
        CREATE CATALOG sqlserver_catlog PROPERTIES (
                "type"="jdbc",
                "jdbc.user"="SA",
@@ -240,6 +254,30 @@ CREATE CATALOG catalog_name PROPERTIES (
        );      
        ```
 
+   **SAP_HANA**
+   ```sql
+   -- The first way
+   CREATE RESOURCE saphana_resource PROPERTIES (
+       "type"="jdbc",
+       "user"="SYSTEM",
+       "password"="SAPHANA",
+       "jdbc_url" = "jdbc:sap://localhost:31515/TEST",
+       "driver_url" = "file:///path/to/ngdbc.jar",
+       "driver_class" = "com.sap.db.jdbc.Driver"
+   );
+   CREATE CATALOG saphana_catlog WITH RESOURCE saphana_resource;
+
+   -- The second way
+       CREATE CATALOG saphana_catalog PROPERTIES (
+       "type"="jdbc",
+       "user"="SYSTEM",
+       "password"="SAPHANA",
+       "jdbc_url" = "jdbc:sap://localhost:31515/TEST",
+       "driver_url" = "file:///path/to/ngdbc.jar",
+       "driver_class" = "com.sap.db.jdbc.Driver"
+       );
+   ```
+
 ### Keywords
 
 CREATE, CATALOG
diff --git 
a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
 
b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
index 65b3417302..01ec62e60e 100644
--- 
a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
+++ 
b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG.md
@@ -130,6 +130,7 @@ CREATE CATALOG catalog_name PROPERTIES (
 
        ```sql
        -- 1.2.0+ 版本
+       -- 方式一 
        CREATE RESOURCE mysql_resource PROPERTIES (
                "type"="jdbc",
                "user"="root",
@@ -140,8 +141,18 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE msyql_resource;
 
-       -- 1.2.0 版本
+       -- 方式二
        CREATE CATALOG jdbc PROPERTIES (
+               "type"="jdbc",
+               "user"="root",
+               "password"="123456",
+               "jdbc_url" = 
"jdbc:mysql://127.0.0.1:3316/doris_test?useSSL=false",
+               "driver_url" = 
"https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/jdbc_driver/mysql-connector-java-8.0.25.jar";,
+               "driver_class" = "com.mysql.cj.jdbc.Driver"
+       );
+       
+       -- 1.2.0 版本
+       CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
                "jdbc.user"="root",
                "jdbc.password"="123456",
@@ -165,21 +176,21 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE pg_resource;
 
-       -- 方式二,注意有jdbc前缀
+       -- 方式二
        CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
-               "jdbc.user"="postgres",
-               "jdbc.password"="123456",
-               "jdbc.jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/demo",
-               "jdbc.driver_url" = "file:/path/to/postgresql-42.5.1.jar",
-               "jdbc.driver_class" = "org.postgresql.Driver"
+               "user"="postgres",
+               "password"="123456",
+               "jdbc_url" = "jdbc:postgresql://127.0.0.1:5432/demo",
+               "driver_url" = "file:///path/to/postgresql-42.5.1.jar",
+               "driver_class" = "org.postgresql.Driver"
        );
        ```
  
    **clickhouse**
 
    ```sql
-   -- 1.2.0+ Version
+   -- 方式一
    CREATE RESOURCE clickhouse_resource PROPERTIES (
        "type"="jdbc",
        "user"="default",
@@ -190,11 +201,14 @@ CREATE CATALOG catalog_name PROPERTIES (
    )
    CREATE CATALOG jdbc WITH RESOURCE clickhouse_resource;
    
-   -- 1.2.0 Version
+   -- 方式一
    CREATE CATALOG jdbc PROPERTIES (
        "type"="jdbc",
-       "jdbc.jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo",
-       ...
+       "user"="default",
+       "password"="123456",
+       "jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo",
+       "driver_url" = "file:///path/to/clickhouse-jdbc-0.3.2-patch11-all.jar",
+       "driver_class" = "com.clickhouse.jdbc.ClickHouseDriver"
    )
    ```
 
@@ -211,14 +225,14 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG jdbc WITH RESOURCE oracle_resource;
 
-       -- 方式二,注意有jdbc前缀
+       -- 方式二
        CREATE CATALOG jdbc PROPERTIES (
                "type"="jdbc",
-               "jdbc.user"="doris",
-               "jdbc.password"="123456",
-               "jdbc.jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin",
-               "jdbc.driver_url" = "file:/path/to/ojdbc6.jar",
-               "jdbc.driver_class" = "oracle.jdbc.driver.OracleDriver"
+               "user"="doris",
+               "password"="123456",
+               "jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin",
+               "driver_url" = "file:///path/to/ojdbc6.jar",
+               "driver_class" = "oracle.jdbc.driver.OracleDriver"
        );      
        ```
 
@@ -235,17 +249,41 @@ CREATE CATALOG catalog_name PROPERTIES (
        );
        CREATE CATALOG sqlserver_catlog WITH RESOURCE sqlserver_resource;
 
-       -- 方式二,注意有jdbc前缀
+       -- 方式二
        CREATE CATALOG sqlserver_catlog PROPERTIES (
                "type"="jdbc",
-               "jdbc.user"="SA",
-               "jdbc.password"="Doris123456",
-               "jdbc.jdbc_url" = 
"jdbc:sqlserver://localhost:1433;DataBaseName=doris_test",
-               "jdbc.driver_url" = "file:/path/to/mssql-jdbc-11.2.3.jre8.jar",
-               "jdbc.driver_class" = 
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
+               "user"="SA",
+               "password"="Doris123456",
+               "jdbc_url" = 
"jdbc:sqlserver://localhost:1433;DataBaseName=doris_test",
+               "driver_url" = "file:///path/to/mssql-jdbc-11.2.3.jre8.jar",
+               "driver_class" = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        );      
        ```
 
+   **SAP_HANA**
+   ```sql
+   -- 方式一
+   CREATE RESOURCE saphana_resource PROPERTIES (
+       "type"="jdbc",
+       "user"="SYSTEM",
+       "password"="SAPHANA",
+       "jdbc_url" = "jdbc:sap://localhost:31515/TEST",
+       "driver_url" = "file:///path/to/ngdbc.jar",
+       "driver_class" = "com.sap.db.jdbc.Driver"
+   );
+   CREATE CATALOG saphana_catlog WITH RESOURCE saphana_resource;
+
+   -- 方式二
+       CREATE CATALOG saphana_catalog PROPERTIES (
+       "type"="jdbc",
+       "user"="SYSTEM",
+       "password"="SAPHANA",
+       "jdbc_url" = "jdbc:sap://localhost:31515/TEST",
+       "driver_url" = "file:///path/to/ngdbc.jar",
+       "driver_class" = "com.sap.db.jdbc.Driver"
+       );
+   ```
+
 ### Keywords
 
 CREATE, CATALOG
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
index 1cede92b9f..7cac35d627 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java
@@ -67,12 +67,14 @@ public class JdbcResource extends Resource {
     public static final String JDBC_ORACLE = "jdbc:oracle";
     public static final String JDBC_SQLSERVER = "jdbc:sqlserver";
     public static final String JDBC_CLICKHOUSE = "jdbc:clickhouse";
+    public static final String JDBC_SAP_HANA = "jdbc:sap";
 
     public static final String MYSQL = "MYSQL";
     public static final String POSTGRESQL = "POSTGRESQL";
     public static final String ORACLE = "ORACLE";
     public static final String SQLSERVER = "SQLSERVER";
     public static final String CLICKHOUSE = "CLICKHOUSE";
+    public static final String SAP_HANA = "SAP_HANA";
 
     public static final String JDBC_PROPERTIES_PREFIX = "jdbc.";
     public static final String JDBC_URL = "jdbc_url";
@@ -259,6 +261,8 @@ public class JdbcResource extends Resource {
             return SQLSERVER;
         } else if (url.startsWith(JDBC_CLICKHOUSE)) {
             return CLICKHOUSE;
+        } else if (url.startsWith(JDBC_SAP_HANA)) {
+            return SAP_HANA;
         }
         throw new DdlException("Unsupported jdbc database type, please check 
jdbcUrl: " + url);
     }
@@ -323,7 +327,6 @@ public class JdbcResource extends Resource {
      *
      * @param jdbcUrl
      * @param params
-     * @param value
      * @return
      */
     private static String checkAndSetJdbcParam(String jdbcUrl, String params, 
String expectedVal) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcTable.java
index 21c7112f88..c9a36c0439 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcTable.java
@@ -74,6 +74,7 @@ public class JdbcTable extends Table {
         tempMap.put("sqlserver", TOdbcTableType.SQLSERVER);
         tempMap.put("oracle", TOdbcTableType.ORACLE);
         tempMap.put("clickhouse", TOdbcTableType.CLICKHOUSE);
+        tempMap.put("sap_hana", TOdbcTableType.SAP_HANA);
         TABLE_TYPE_MAP = Collections.unmodifiableMap(tempMap);
     }
 
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcTable.java
index b02939119a..fb0cf1d3a3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcTable.java
@@ -97,6 +97,11 @@ public class OdbcTable extends Table {
         return list.stream().map(s -> "\"" + s.toUpperCase() + 
"\"").collect(Collectors.joining("."));
     }
 
+    private static String saphanaProperName(String name) {
+        List<String> list = Arrays.asList(name.split("\\."));
+        return list.stream().map(s -> "\"" + s.toUpperCase() + 
"\"").collect(Collectors.joining("."));
+    }
+
     public static String databaseProperName(TOdbcTableType tableType, String 
name) {
         switch (tableType) {
             case MYSQL:
@@ -107,6 +112,8 @@ public class OdbcTable extends Table {
                 return psqlProperName(name);
             case ORACLE:
                 return oracleProperName(name);
+            case SAP_HANA:
+                return saphanaProperName(name);
             default:
                 return name;
         }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java 
b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
index 1b4f5bd076..08d4122126 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
@@ -166,7 +166,7 @@ public class JdbcClient {
      * @return list of database names
      */
     public List<String> getDatabaseNameList() {
-        Connection conn =  getConnection();
+        Connection conn = getConnection();
         Statement stmt = null;
         ResultSet rs = null;
         if (isOnlySpecifiedDatabase) {
@@ -190,6 +190,9 @@ public class JdbcClient {
                 case JdbcResource.SQLSERVER:
                     rs = stmt.executeQuery("SELECT name FROM sys.schemas");
                     break;
+                case JdbcResource.SAP_HANA:
+                    rs = stmt.executeQuery("SELECT SCHEMA_NAME FROM 
SYS.SCHEMAS");
+                    break;
                 default:
                     throw new JdbcClientException("Not supported jdbc type");
             }
@@ -216,6 +219,7 @@ public class JdbcClient {
                 case JdbcResource.POSTGRESQL:
                 case JdbcResource.ORACLE:
                 case JdbcResource.SQLSERVER:
+                case JdbcResource.SAP_HANA:
                     databaseNames.add(conn.getSchema());
                     break;
                 default:
@@ -233,10 +237,10 @@ public class JdbcClient {
      * get all tables of one database
      */
     public List<String> getTablesNameList(String dbName) {
-        Connection conn =  getConnection();
+        Connection conn = getConnection();
         ResultSet rs = null;
         List<String> tablesName = Lists.newArrayList();
-        String[] types = { "TABLE", "VIEW" };
+        String[] types = {"TABLE", "VIEW"};
         try {
             DatabaseMetaData databaseMetaData = conn.getMetaData();
             switch (dbType) {
@@ -247,6 +251,7 @@ public class JdbcClient {
                 case JdbcResource.ORACLE:
                 case JdbcResource.CLICKHOUSE:
                 case JdbcResource.SQLSERVER:
+                case JdbcResource.SAP_HANA:
                     rs = databaseMetaData.getTables(null, dbName, null, types);
                     break;
                 default:
@@ -269,9 +274,9 @@ public class JdbcClient {
     }
 
     public boolean isTableExist(String dbName, String tableName) {
-        Connection conn =  getConnection();
+        Connection conn = getConnection();
         ResultSet rs = null;
-        String[] types = { "TABLE", "VIEW" };
+        String[] types = {"TABLE", "VIEW"};
         try {
             DatabaseMetaData databaseMetaData = conn.getMetaData();
             switch (dbType) {
@@ -282,6 +287,7 @@ public class JdbcClient {
                 case JdbcResource.ORACLE:
                 case JdbcResource.CLICKHOUSE:
                 case JdbcResource.SQLSERVER:
+                case JdbcResource.SAP_HANA:
                     rs = databaseMetaData.getTables(null, dbName, null, types);
                     break;
                 default:
@@ -325,7 +331,7 @@ public class JdbcClient {
      * get all columns of one table
      */
     public List<JdbcFieldSchema> getJdbcColumnsInfo(String dbName, String 
tableName) {
-        Connection conn =  getConnection();
+        Connection conn = getConnection();
         ResultSet rs = null;
         List<JdbcFieldSchema> tableSchema = Lists.newArrayList();
         // if isLowerCaseTableNames == true, tableName is lower case
@@ -352,6 +358,7 @@ public class JdbcClient {
                 case JdbcResource.ORACLE:
                 case JdbcResource.CLICKHOUSE:
                 case JdbcResource.SQLSERVER:
+                case JdbcResource.SAP_HANA:
                     rs = databaseMetaData.getColumns(null, dbName, tableName, 
null);
                     break;
                 default:
@@ -397,6 +404,8 @@ public class JdbcClient {
                 return oracleTypeToDoris(fieldSchema);
             case JdbcResource.SQLSERVER:
                 return sqlserverTypeToDoris(fieldSchema);
+            case JdbcResource.SAP_HANA:
+                return saphanaTypeToDoris(fieldSchema);
             default:
                 throw new JdbcClientException("Unknown database type");
         }
@@ -728,6 +737,59 @@ public class JdbcClient {
         }
     }
 
+    public Type saphanaTypeToDoris(JdbcFieldSchema fieldSchema) {
+        String hanaType = fieldSchema.getDataTypeName();
+        switch (hanaType) {
+            case "TINYINT":
+                return Type.TINYINT;
+            case "SMALLINT":
+                return Type.SMALLINT;
+            case "INTEGER":
+                return Type.INT;
+            case "BIGINT":
+                return Type.BIGINT;
+            case "SMALLDECIMAL":
+            case "DECIMAL": {
+                int precision = fieldSchema.getColumnSize();
+                int scale = fieldSchema.getDecimalDigits();
+                return createDecimalOrStringType(precision, scale);
+            }
+            case "REAL":
+                return Type.FLOAT;
+            case "DOUBLE":
+                return Type.DOUBLE;
+            case "TIMESTAMP":
+            case "SECONDDATE":
+                return ScalarType.createDatetimeV2Type(6);
+            case "DATE":
+                return ScalarType.createDateV2Type();
+            case "BOOLEAN":
+                return Type.BOOLEAN;
+            case "CHAR":
+            case "NCHAR":
+                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
+                charType.setLength(fieldSchema.columnSize);
+                return charType;
+            case "TIME":
+            case "VARCHAR":
+            case "NVARCHAR":
+            case "ALPHANUM":
+            case "SHORTTEXT":
+                return ScalarType.createStringType();
+            case "BINARY":
+            case "VARBINARY":
+            case "BLOB":
+            case "CLOB":
+            case "NCLOB":
+            case "TEXT":
+            case "BINTEXT":
+            case "ST_GEOMETRY":
+            case "ST_POINT":
+            default:
+                return Type.UNSUPPORTED;
+        }
+    }
+
     private Type createDecimalOrStringType(int precision, int scale) {
         if (precision <= ScalarType.MAX_DECIMAL128_PRECISION) {
             if (!Config.enable_decimal_conversion && (precision > 
ScalarType.MAX_DECIMALV2_PRECISION
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
index 8f3c89ebd5..2749dcc213 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/JdbcScanNode.java
@@ -147,7 +147,8 @@ public class JdbcScanNode extends ScanNode {
                 && (jdbcType == TOdbcTableType.MYSQL
                 || jdbcType == TOdbcTableType.POSTGRESQL
                 || jdbcType == TOdbcTableType.MONGODB
-                || jdbcType == TOdbcTableType.CLICKHOUSE)) {
+                || jdbcType == TOdbcTableType.CLICKHOUSE
+                || jdbcType == TOdbcTableType.SAP_HANA)) {
             sql.append(" LIMIT ").append(limit);
         }
 
diff --git a/gensrc/thrift/Types.thrift b/gensrc/thrift/Types.thrift
index ba3d28e1a2..622822ec95 100644
--- a/gensrc/thrift/Types.thrift
+++ b/gensrc/thrift/Types.thrift
@@ -559,7 +559,8 @@ enum TOdbcTableType {
     SQLSERVER,
     REDIS,
     MONGODB,
-    CLICKHOUSE
+    CLICKHOUSE,
+    SAP_HANA
 }
 
 enum TKeysType {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to