Unverified Commit 5c6d1ae4 authored by aiwenmo's avatar aiwenmo Committed by GitHub

[Fix-670] [metadata] Fix Oracle column nullable error (#671)

* [Feature-654][web] Add task info tab

* [Feature-666][client] Capture column type conversion exception details in CDCSOURCE

* [Feature-668][web] Add task manager info

* [Fix-670] [metadata] Fix Oracle column nullable  error
Co-authored-by: 's avatarwenmo <32723967+wenmo@users.noreply.github.com>
parent 776473d7
package com.dlink.metadata.driver; package com.dlink.metadata.driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.SQLStatement;
import com.dlink.assertion.Asserts; import com.dlink.assertion.Asserts;
...@@ -11,11 +27,6 @@ import com.dlink.model.Schema; ...@@ -11,11 +27,6 @@ import com.dlink.model.Schema;
import com.dlink.model.Table; import com.dlink.model.Table;
import com.dlink.result.SqlExplainResult; import com.dlink.result.SqlExplainResult;
import com.dlink.utils.LogUtil; import com.dlink.utils.LogUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.*;
import java.util.*;
/** /**
* AbstractJdbcDriver * AbstractJdbcDriver
...@@ -204,7 +215,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver { ...@@ -204,7 +215,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
field.setComment(columnComment); field.setComment(columnComment);
} }
if (columnList.contains(dbQuery.isNullable())) { if (columnList.contains(dbQuery.isNullable())) {
field.setNullable(Asserts.isEqualsIgnoreCase(results.getString(dbQuery.isNullable()), "YES")); field.setNullable(Asserts.isEqualsIgnoreCase(results.getString(dbQuery.isNullable()), dbQuery.nullableValue()));
} }
if (columnList.contains(dbQuery.characterSet())) { if (columnList.contains(dbQuery.characterSet())) {
field.setCharacterSet(results.getString(dbQuery.characterSet())); field.setCharacterSet(results.getString(dbQuery.characterSet()));
...@@ -239,13 +250,13 @@ public abstract class AbstractJdbcDriver extends AbstractDriver { ...@@ -239,13 +250,13 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
public List<Column> listColumnsSortByPK(String schemaName, String tableName) { public List<Column> listColumnsSortByPK(String schemaName, String tableName) {
List<Column> columnList = listColumns(schemaName, tableName); List<Column> columnList = listColumns(schemaName, tableName);
List<Column> columnListSortByPK = new ArrayList<>(); List<Column> columnListSortByPK = new ArrayList<>();
for(Column column: columnList){ for (Column column : columnList) {
if(column.isKeyFlag()){ if (column.isKeyFlag()) {
columnListSortByPK.add(column); columnListSortByPK.add(column);
} }
} }
for(Column column: columnList){ for (Column column : columnList) {
if(!column.isKeyFlag()){ if (!column.isKeyFlag()) {
columnListSortByPK.add(column); columnListSortByPK.add(column);
} }
} }
......
...@@ -137,4 +137,9 @@ public abstract class AbstractDBQuery implements IDBQuery { ...@@ -137,4 +137,9 @@ public abstract class AbstractDBQuery implements IDBQuery {
public String isPK() { public String isPK() {
return "PRI"; return "PRI";
} }
@Override
public String nullableValue() {
return "YES";
}
} }
...@@ -151,4 +151,9 @@ public interface IDBQuery { ...@@ -151,4 +151,9 @@ public interface IDBQuery {
* @return 主键值 * @return 主键值
*/ */
String isPK(); String isPK();
/**
* @return 允许为空的值
*/
String nullableValue();
} }
...@@ -82,4 +82,9 @@ public class OracleQuery extends AbstractDBQuery { ...@@ -82,4 +82,9 @@ public class OracleQuery extends AbstractDBQuery {
public String isNullable() { public String isNullable() {
return "NULLABLE"; return "NULLABLE";
} }
@Override
public String nullableValue() {
return "Y";
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment