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;
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.ast.SQLStatement;
import com.dlink.assertion.Asserts;
......@@ -11,11 +27,6 @@ import com.dlink.model.Schema;
import com.dlink.model.Table;
import com.dlink.result.SqlExplainResult;
import com.dlink.utils.LogUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.*;
import java.util.*;
/**
* AbstractJdbcDriver
......@@ -204,7 +215,7 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
field.setComment(columnComment);
}
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())) {
field.setCharacterSet(results.getString(dbQuery.characterSet()));
......@@ -239,13 +250,13 @@ public abstract class AbstractJdbcDriver extends AbstractDriver {
public List<Column> listColumnsSortByPK(String schemaName, String tableName) {
List<Column> columnList = listColumns(schemaName, tableName);
List<Column> columnListSortByPK = new ArrayList<>();
for(Column column: columnList){
if(column.isKeyFlag()){
for (Column column : columnList) {
if (column.isKeyFlag()) {
columnListSortByPK.add(column);
}
}
for(Column column: columnList){
if(!column.isKeyFlag()){
for (Column column : columnList) {
if (!column.isKeyFlag()) {
columnListSortByPK.add(column);
}
}
......
......@@ -137,4 +137,9 @@ public abstract class AbstractDBQuery implements IDBQuery {
public String isPK() {
return "PRI";
}
@Override
public String nullableValue() {
return "YES";
}
}
......@@ -151,4 +151,9 @@ public interface IDBQuery {
* @return 主键值
*/
String isPK();
/**
* @return 允许为空的值
*/
String nullableValue();
}
......@@ -82,4 +82,9 @@ public class OracleQuery extends AbstractDBQuery {
public String isNullable() {
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