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

zykkk pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new ef754487d9a [branch-2.1][improvement](jdbc catalog) Catch 
`AbstractMethodError` in `getColumnValue` Method and Suggest Updating to 
ojdbc8+ (#37634)
ef754487d9a is described below

commit ef754487d9a9e48309c65b7e715c1008c2962f56
Author: zy-kkk <zhongy...@gmail.com>
AuthorDate: Thu Jul 11 15:10:47 2024 +0800

    [branch-2.1][improvement](jdbc catalog) Catch `AbstractMethodError` in 
`getColumnValue` Method and Suggest Updating to ojdbc8+ (#37634)
    
    pick (#37608)
    
    Catch AbstractMethodError in getColumnValue method. Provide a clear
    error message suggesting the use of ojdbc8 or higher versions to avoid
    compatibility issues.
---
 .../org/apache/doris/jdbc/OracleJdbcExecutor.java  | 67 ++++++++++++----------
 1 file changed, 36 insertions(+), 31 deletions(-)

diff --git 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/OracleJdbcExecutor.java
 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/OracleJdbcExecutor.java
index 0c29ac440e5..47055facabb 100644
--- 
a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/OracleJdbcExecutor.java
+++ 
b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/OracleJdbcExecutor.java
@@ -60,37 +60,42 @@ public class OracleJdbcExecutor extends BaseJdbcExecutor {
 
     @Override
     protected Object getColumnValue(int columnIndex, ColumnType type, String[] 
replaceStringList) throws SQLException {
-        switch (type.getType()) {
-            case TINYINT:
-                return resultSet.getObject(columnIndex + 1, Byte.class);
-            case SMALLINT:
-                return resultSet.getObject(columnIndex + 1, Short.class);
-            case INT:
-                return resultSet.getObject(columnIndex + 1, Integer.class);
-            case BIGINT:
-                return resultSet.getObject(columnIndex + 1, Long.class);
-            case FLOAT:
-                return resultSet.getObject(columnIndex + 1, Float.class);
-            case DOUBLE:
-                return resultSet.getObject(columnIndex + 1, Double.class);
-            case LARGEINT:
-            case DECIMALV2:
-            case DECIMAL32:
-            case DECIMAL64:
-            case DECIMAL128:
-                return resultSet.getObject(columnIndex + 1, BigDecimal.class);
-            case DATE:
-            case DATEV2:
-                return resultSet.getObject(columnIndex + 1, LocalDate.class);
-            case DATETIME:
-            case DATETIMEV2:
-                return resultSet.getObject(columnIndex + 1, 
LocalDateTime.class);
-            case CHAR:
-            case VARCHAR:
-            case STRING:
-                return resultSet.getObject(columnIndex + 1);
-            default:
-                throw new IllegalArgumentException("Unsupported column type: " 
+ type.getType());
+        try {
+            switch (type.getType()) {
+                case TINYINT:
+                    return resultSet.getObject(columnIndex + 1, Byte.class);
+                case SMALLINT:
+                    return resultSet.getObject(columnIndex + 1, Short.class);
+                case INT:
+                    return resultSet.getObject(columnIndex + 1, Integer.class);
+                case BIGINT:
+                    return resultSet.getObject(columnIndex + 1, Long.class);
+                case FLOAT:
+                    return resultSet.getObject(columnIndex + 1, Float.class);
+                case DOUBLE:
+                    return resultSet.getObject(columnIndex + 1, Double.class);
+                case LARGEINT:
+                case DECIMALV2:
+                case DECIMAL32:
+                case DECIMAL64:
+                case DECIMAL128:
+                    return resultSet.getObject(columnIndex + 1, 
BigDecimal.class);
+                case DATE:
+                case DATEV2:
+                    return resultSet.getObject(columnIndex + 1, 
LocalDate.class);
+                case DATETIME:
+                case DATETIMEV2:
+                    return resultSet.getObject(columnIndex + 1, 
LocalDateTime.class);
+                case CHAR:
+                case VARCHAR:
+                case STRING:
+                    return resultSet.getObject(columnIndex + 1);
+                default:
+                    throw new IllegalArgumentException("Unsupported column 
type: " + type.getType());
+            }
+        } catch (AbstractMethodError e) {
+            LOG.warn("Detected an outdated ojdbc driver. Please use ojdbc8 or 
above.", e);
+            throw new SQLException("Detected an outdated ojdbc driver. Please 
use ojdbc8 or above.");
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to