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

zykkk 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 3c1488ca240 [improvement](jdbc catalog) Catch `AbstractMethodError` in 
`getColumnValue` Method and Suggest Updating to ojdbc8+ (#37608)
3c1488ca240 is described below

commit 3c1488ca240d83e3209f31e2a122bac282e43ef3
Author: zy-kkk <[email protected]>
AuthorDate: Thu Jul 11 09:58:22 2024 +0800

    [improvement](jdbc catalog) Catch `AbstractMethodError` in `getColumnValue` 
Method and Suggest Updating to ojdbc8+ (#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 9a38c2b9e68..662f324eb23 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
@@ -65,37 +65,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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to