提交 a8f400b4 编写于 作者: S serge-rider

#8570 Firebird improvements. Minor Generic model update.


Former-commit-id: 390d1206
上级 5a754e9d
...@@ -60,8 +60,11 @@ public class FireBirdDataTypeCache extends JDBCBasicDataTypeCache<GenericStructC ...@@ -60,8 +60,11 @@ public class FireBirdDataTypeCache extends JDBCBasicDataTypeCache<GenericStructC
try { try {
try (JDBCSession session = DBUtils.openMetaSession(monitor, dataSource, "Load Firebird domain types")) { try (JDBCSession session = DBUtils.openMetaSession(monitor, dataSource, "Load Firebird domain types")) {
// Use CAST to improve performance, binaries are too slow
try (JDBCPreparedStatement dbStat = session.prepareStatement( try (JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT F.* FROM RDB$FIELDS F ORDER BY RDB$FIELD_NAME")) "SELECT RDB$FIELD_NAME,RDB$FIELD_LENGTH,RDB$FIELD_SCALE,RDB$FIELD_PRECISION,RDB$FIELD_TYPE,RDB$FIELD_SUB_TYPE,RDB$CHARACTER_LENGTH,RDB$COLLATION_ID,RDB$CHARACTER_SET_ID,\n" +
"CAST(RDB$VALIDATION_SOURCE AS VARCHAR(512)),CAST(RDB$COMPUTED_SOURCE AS VARCHAR(512)),CAST(RDB$DEFAULT_SOURCE AS VARCHAR(512))\n" +
"FROM RDB$FIELDS F ORDER BY RDB$FIELD_NAME"))
{ {
monitor.subTask("Load Firebird domain types"); monitor.subTask("Load Firebird domain types");
try (JDBCResultSet dbResult = dbStat.executeQuery()) { try (JDBCResultSet dbResult = dbStat.executeQuery()) {
...@@ -81,8 +84,8 @@ public class FireBirdDataTypeCache extends JDBCBasicDataTypeCache<GenericStructC ...@@ -81,8 +84,8 @@ public class FireBirdDataTypeCache extends JDBCBasicDataTypeCache<GenericStructC
int charLength = JDBCUtils.safeGetInt(dbResult, "RDB$CHARACTER_LENGTH"); int charLength = JDBCUtils.safeGetInt(dbResult, "RDB$CHARACTER_LENGTH");
int collationId = JDBCUtils.safeGetInt(dbResult, "RDB$COLLATION_ID"); int collationId = JDBCUtils.safeGetInt(dbResult, "RDB$COLLATION_ID");
int charsetId = JDBCUtils.safeGetInt(dbResult, "RDB$CHARACTER_SET_ID"); int charsetId = JDBCUtils.safeGetInt(dbResult, "RDB$CHARACTER_SET_ID");
String validationSource = JDBCUtils.safeGetString(dbResult, "RDB$VALIDATION_SOURCE"); String validationSource = JDBCUtils.safeGetString(dbResult, "RDB$VALIDATION_SOURCE"); // ?
String computedSource = JDBCUtils.safeGetString(dbResult, "RDB$COMPUTED_SOURCE"); String computedSource = JDBCUtils.safeGetString(dbResult, "RDB$COMPUTED_SOURCE"); // ?
String typeDescription = JDBCUtils.safeGetString(dbResult, "RDB$DESCRIPTION"); String typeDescription = JDBCUtils.safeGetString(dbResult, "RDB$DESCRIPTION");
String defaultSource = JDBCUtils.safeGetString(dbResult, "RDB$DEFAULT_SOURCE"); String defaultSource = JDBCUtils.safeGetString(dbResult, "RDB$DEFAULT_SOURCE");
......
...@@ -48,6 +48,9 @@ import java.util.regex.Pattern; ...@@ -48,6 +48,9 @@ import java.util.regex.Pattern;
*/ */
public class FireBirdMetaModel extends GenericMetaModel public class FireBirdMetaModel extends GenericMetaModel
{ {
// Copied from Jaybird sources
private static final int OBJECT_NAME_LENGTH = 63;
private Pattern ERROR_POSITION_PATTERN = Pattern.compile(" line ([0-9]+), column ([0-9]+)"); private Pattern ERROR_POSITION_PATTERN = Pattern.compile(" line ([0-9]+), column ([0-9]+)");
public FireBirdMetaModel() { public FireBirdMetaModel() {
...@@ -227,9 +230,64 @@ public class FireBirdMetaModel extends GenericMetaModel ...@@ -227,9 +230,64 @@ public class FireBirdMetaModel extends GenericMetaModel
return table; return table;
} }
/*
@Override
public JDBCStatement prepareTableColumnLoadStatement(@NotNull JDBCSession session, @NotNull GenericStructContainer owner, @Nullable GenericTableBase forTable) throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("SELECT " +
"NULL as TABLE_CAT,NULL as TABLE_SCHEM,\n" +
"cast(RF.RDB$RELATION_NAME as varchar(" + OBJECT_NAME_LENGTH + ")) AS TABLE_NAME,\n" +
"cast(RF.RDB$FIELD_NAME as varchar(" + OBJECT_NAME_LENGTH + ")) AS COLUMN_NAME,\n" +
"F.RDB$FIELD_TYPE AS DATA_TYPE,\n" +
"F.RDB$FIELD_SUB_TYPE AS TYPE_NAME,\n" +
"F.RDB$FIELD_PRECISION AS COLUMN_SIZE,\n" +
"F.RDB$FIELD_SCALE AS BUFFER_LENGTH,\n" +
"F.RDB$FIELD_LENGTH AS DECIMAL_DIGITS,\n" +
"F.RDB$CHARACTER_LENGTH AS CHAR_LEN,\n" +
"RF.RDB$DESCRIPTION AS REMARKS,\n" +
"RF.RDB$DEFAULT_SOURCE AS DEFAULT_SOURCE,\n" +
"F.RDB$DEFAULT_SOURCE AS DOMAIN_DEFAULT_SOURCE,\n" +
"RF.RDB$FIELD_POSITION + 1 AS FIELD_POSITION,\n" +
"RF.RDB$NULL_FLAG AS NULL_FLAG,\n" +
"F.RDB$NULL_FLAG AS SOURCE_NULL_FLAG,\n" +
"F.RDB$COMPUTED_BLR AS COMPUTED_BLR,\n" +
"F.RDB$CHARACTER_SET_ID,\n" +
"RF.RDB$FIELD_SOURCE,\n");
if (hasIdentityColumns(session)) {
sql.append("CASE WHEN RF.RDB$IDENTITY_TYPE IS NULL THEN CAST('NO' AS VARCHAR(3)) ELSE CAST('YES' AS VARCHAR(3)) END AS IS_IDENTITY,\n" +
"CASE RF.RDB$IDENTITY_TYPE WHEN 0 THEN CAST('ALWAYS' AS VARCHAR(10)) WHEN 1 THEN CAST('BY DEFAULT' AS VARCHAR(10)) ELSE NULL END AS JB_IDENTITY_TYPE\n" +
"FROM RDB$RELATION_FIELDS RF,RDB$FIELDS F");
} else {
sql.append("'NO' AS IS_IDENTITY,\n" +
"CAST(NULL AS VARCHAR(10)) AS JB_IDENTITY_TYPE\n" +
"FROM RDB$RELATION_FIELDS RF,RDB$FIELDS F");
}
sql.append("\nWHERE RF.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME ");
if (forTable != null) {
sql.append("AND RF.RDB$RELATION_NAME=? ");
}
sql.append("\nORDER BY RF.RDB$RELATION_NAME, RF.RDB$FIELD_POSITION");
JDBCPreparedStatement dbStat = session.prepareStatement(sql.toString());
if (forTable != null) {
dbStat.setString(1, forTable.getName());
}
return dbStat;
}
private boolean hasIdentityColumns(JDBCSession session) throws SQLException {
try {
DatabaseMetaData metaData = session.getOriginal().getMetaData();
Object odsVersion = metaData.getClass().getMethod("getOdsMajorVersion").invoke(metaData);
return CommonUtils.toInt(odsVersion) > 12;
} catch (Exception e) {
return false;
}
}
*/
@Override @Override
public GenericTableColumn createTableColumnImpl(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException { public GenericTableColumn createTableColumnImpl(@NotNull DBRProgressMonitor monitor, JDBCResultSet dbResult, @NotNull GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException {
return new FireBirdTableColumn(monitor, table, return new FireBirdTableColumn(monitor, dbResult, table,
columnName, columnName,
typeName, valueType, sourceType, ordinalPos, typeName, valueType, sourceType, ordinalPos,
columnSize, columnSize,
......
...@@ -24,21 +24,23 @@ import org.jkiss.dbeaver.ext.generic.model.GenericTable; ...@@ -24,21 +24,23 @@ import org.jkiss.dbeaver.ext.generic.model.GenericTable;
import org.jkiss.dbeaver.ext.generic.model.GenericTableColumn; import org.jkiss.dbeaver.ext.generic.model.GenericTableColumn;
import org.jkiss.dbeaver.model.DBPNamedObject2; import org.jkiss.dbeaver.model.DBPNamedObject2;
import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList; import java.sql.SQLException;
import java.util.Collection; import java.util.*;
import java.util.Collections;
import java.util.List;
public class FireBirdTable extends GenericTable implements DBPNamedObject2 { public class FireBirdTable extends GenericTable implements DBPNamedObject2 {
private int keyLength; private int keyLength;
private String externalFile; private String externalFile;
private String ownerName; private String ownerName;
private Map<String, String> columnDomainTypes;
public FireBirdTable(GenericStructContainer container, @Nullable String tableName, @Nullable String tableType, @Nullable JDBCResultSet dbResult) { public FireBirdTable(GenericStructContainer container, @Nullable String tableName, @Nullable String tableType, @Nullable JDBCResultSet dbResult) {
super(container, tableName, tableType, null); super(container, tableName, tableType, null);
...@@ -83,4 +85,36 @@ public class FireBirdTable extends GenericTable implements DBPNamedObject2 { ...@@ -83,4 +85,36 @@ public class FireBirdTable extends GenericTable implements DBPNamedObject2 {
columns.sort(DBUtils.orderComparator()); columns.sort(DBUtils.orderComparator());
return columns; return columns;
} }
String getColumnDomainType(DBRProgressMonitor monitor, FireBirdTableColumn column) throws DBException {
if (columnDomainTypes == null) {
columnDomainTypes = readColumnDomainTypes(monitor);
}
return columnDomainTypes.get(column.getName());
}
private Map<String, String> readColumnDomainTypes(DBRProgressMonitor monitor) throws DBException {
try (JDBCSession session = DBUtils.openMetaSession(monitor, this, "Read column domain type")) {
// Read metadata
try (JDBCPreparedStatement dbStat = session.prepareStatement("SELECT RF.RDB$FIELD_NAME,RF.RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS RF WHERE RF.RDB$RELATION_NAME=?")) {
dbStat.setString(1, getName());
try (JDBCResultSet dbResult = dbStat.executeQuery()) {
Map<String, String> dtMap = new HashMap<>();
while (dbResult.next()) {
String columnName = JDBCUtils.safeGetStringTrimmed(dbResult, 1);
String domainTypeName = JDBCUtils.safeGetStringTrimmed(dbResult, 2);
if (!CommonUtils.isEmpty(columnName) && !CommonUtils.isEmpty(domainTypeName)) {
dtMap.put(columnName, domainTypeName);
}
}
return dtMap;
}
}
} catch (SQLException ex) {
throw new DBException("Error reading column domain types for " + getName(), ex);
}
}
} }
...@@ -22,31 +22,22 @@ import org.jkiss.dbeaver.ext.generic.model.GenericTableBase; ...@@ -22,31 +22,22 @@ import org.jkiss.dbeaver.ext.generic.model.GenericTableBase;
import org.jkiss.dbeaver.ext.generic.model.GenericTableColumn; import org.jkiss.dbeaver.ext.generic.model.GenericTableColumn;
import org.jkiss.dbeaver.model.DBPDataKind; import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPNamedObject2; import org.jkiss.dbeaver.model.DBPNamedObject2;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSDataType; import org.jkiss.dbeaver.model.struct.DBSDataType;
import java.sql.SQLException;
public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedObject2 { public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedObject2 {
private String domainTypeName;
private FireBirdDataType dataType; private FireBirdDataType dataType;
public FireBirdTableColumn(FireBirdTable table) { public FireBirdTableColumn(FireBirdTable table) {
super(table); super(table);
} }
public FireBirdTableColumn(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPosition, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException { public FireBirdTableColumn(DBRProgressMonitor monitor, JDBCResultSet dbResult, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPosition, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException {
super(table, columnName, typeName, valueType, sourceType, ordinalPosition, columnSize, charLength, scale, precision, radix, notNull, remarks, defaultValue, autoIncrement, autoGenerated); super(table, columnName, typeName, valueType, sourceType, ordinalPosition, columnSize, charLength, scale, precision, radix, notNull, remarks, defaultValue, autoIncrement, autoGenerated);
if (typeName.equals("CHAR") || typeName.equals("VARCHAR")) { String domainTypeName = getDomainTypeName(monitor);
getDomainTypeName(monitor);
}
if (domainTypeName != null) { if (domainTypeName != null) {
dataType = (FireBirdDataType) table.getDataSource().getLocalDataType(domainTypeName); dataType = (FireBirdDataType) table.getDataSource().getLocalDataType(domainTypeName);
} else { } else {
...@@ -54,6 +45,11 @@ public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedO ...@@ -54,6 +45,11 @@ public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedO
} }
} }
@Override
public FireBirdTable getTable() {
return (FireBirdTable)super.getTable();
}
@Override @Override
protected void updateColumnDataType(DBSDataType dataType) { protected void updateColumnDataType(DBSDataType dataType) {
super.updateColumnDataType(dataType); super.updateColumnDataType(dataType);
...@@ -69,29 +65,7 @@ public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedO ...@@ -69,29 +65,7 @@ public class FireBirdTableColumn extends GenericTableColumn implements DBPNamedO
@Property(order = 21) @Property(order = 21)
public String getDomainTypeName(DBRProgressMonitor monitor) throws DBException { public String getDomainTypeName(DBRProgressMonitor monitor) throws DBException {
return getTable().getColumnDomainType(monitor, this);
if (domainTypeName == null) {
try (JDBCSession session = DBUtils.openMetaSession(monitor, this, "Read column domain type")) {
// Read metadata
try (JDBCPreparedStatement dbStat = session.prepareStatement("SELECT RF.RDB$FIELD_SOURCE FROM RDB$RELATION_FIELDS RF WHERE RF.RDB$RELATION_NAME=? AND RF.RDB$FIELD_NAME=?")) {
dbStat.setString(1, getTable().getName());
dbStat.setString(2, getName());
try (JDBCResultSet dbResult = dbStat.executeQuery()) {
if (dbResult.next()) {
domainTypeName = JDBCUtils.safeGetString(dbResult, 1);
if (domainTypeName != null) {
domainTypeName = domainTypeName.trim();
}
}
}
}
} catch (SQLException ex) {
throw new DBException("Error reading column domain type", ex);
}
}
return domainTypeName;
} }
@Property(order = 22, viewable = true) @Property(order = 22, viewable = true)
......
...@@ -62,6 +62,7 @@ public class GenericTableColumnManager extends SQLTableColumnManager<GenericTabl ...@@ -62,6 +62,7 @@ public class GenericTableColumnManager extends SQLTableColumnManager<GenericTabl
int columnSize = columnType != null && columnType.getDataKind() == DBPDataKind.STRING ? 100 : 0; int columnSize = columnType != null && columnType.getDataKind() == DBPDataKind.STRING ? 100 : 0;
GenericTableColumn column = tableBase.getDataSource().getMetaModel().createTableColumnImpl( GenericTableColumn column = tableBase.getDataSource().getMetaModel().createTableColumnImpl(
monitor, monitor,
null,
tableBase, tableBase,
getNewColumnName(monitor, context, tableBase), getNewColumnName(monitor, context, tableBase),
columnType == null ? "INTEGER" : columnType.getName(), columnType == null ? "INTEGER" : columnType.getName(),
......
...@@ -80,14 +80,7 @@ public class TableCache extends JDBCStructLookupCache<GenericStructContainer, Ge ...@@ -80,14 +80,7 @@ public class TableCache extends JDBCStructLookupCache<GenericStructContainer, Ge
protected JDBCStatement prepareChildrenStatement(@NotNull JDBCSession session, @NotNull GenericStructContainer owner, @Nullable GenericTableBase forTable) protected JDBCStatement prepareChildrenStatement(@NotNull JDBCSession session, @NotNull GenericStructContainer owner, @Nullable GenericTableBase forTable)
throws SQLException throws SQLException
{ {
return session.getMetaData().getColumns( return dataSource.getMetaModel().prepareTableColumnLoadStatement(session, owner, forTable);
owner.getCatalog() == null ? null : owner.getCatalog().getName(),
owner.getSchema() == null || DBUtils.isVirtualObject(owner.getSchema()) ? null : JDBCUtils.escapeWildCards(session, owner.getSchema().getName()),
forTable == null ?
owner.getDataSource().getAllObjectsPattern() :
JDBCUtils.escapeWildCards(session, forTable.getName()),
owner.getDataSource().getAllObjectsPattern())
.getSourceStatement();
} }
@Override @Override
...@@ -146,6 +139,7 @@ public class TableCache extends JDBCStructLookupCache<GenericStructContainer, Ge ...@@ -146,6 +139,7 @@ public class TableCache extends JDBCStructLookupCache<GenericStructContainer, Ge
return getDataSource().getMetaModel().createTableColumnImpl( return getDataSource().getMetaModel().createTableColumnImpl(
session.getProgressMonitor(), session.getProgressMonitor(),
dbResult,
table, table,
columnName, columnName,
typeName, valueType, sourceType, ordinalPos, typeName, valueType, sourceType, ordinalPos,
......
...@@ -585,7 +585,18 @@ public class GenericMetaModel { ...@@ -585,7 +585,18 @@ public class GenericMetaModel {
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// Table columns // Table columns
public GenericTableColumn createTableColumnImpl(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException { public JDBCStatement prepareTableColumnLoadStatement(@NotNull JDBCSession session, @NotNull GenericStructContainer owner, @Nullable GenericTableBase forTable) throws SQLException {
return session.getMetaData().getColumns(
owner.getCatalog() == null ? null : owner.getCatalog().getName(),
owner.getSchema() == null || DBUtils.isVirtualObject(owner.getSchema()) ? null : JDBCUtils.escapeWildCards(session, owner.getSchema().getName()),
forTable == null ?
owner.getDataSource().getAllObjectsPattern() :
JDBCUtils.escapeWildCards(session, forTable.getName()),
owner.getDataSource().getAllObjectsPattern())
.getSourceStatement();
}
public GenericTableColumn createTableColumnImpl(@NotNull DBRProgressMonitor monitor, @Nullable JDBCResultSet dbResult, @NotNull GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException {
return new GenericTableColumn(table, return new GenericTableColumn(table,
columnName, columnName,
typeName, valueType, sourceType, ordinalPos, typeName, valueType, sourceType, ordinalPos,
......
...@@ -315,7 +315,7 @@ public class HANAMetaModel extends GenericMetaModel ...@@ -315,7 +315,7 @@ public class HANAMetaModel extends GenericMetaModel
} }
@Override @Override
public GenericTableColumn createTableColumnImpl(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException { public GenericTableColumn createTableColumnImpl(@NotNull DBRProgressMonitor monitor, JDBCResultSet dbResult, @NotNull GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException {
if(table.getSchema().getName().equals("SYS") && table.isView()) { if(table.getSchema().getName().equals("SYS") && table.isView()) {
((HANADataSource)table.getDataSource()).initializeSysViewColumnUnits(monitor); ((HANADataSource)table.getDataSource()).initializeSysViewColumnUnits(monitor);
......
...@@ -173,7 +173,7 @@ public class SQLiteMetaModel extends GenericMetaModel implements DBCQueryTransfo ...@@ -173,7 +173,7 @@ public class SQLiteMetaModel extends GenericMetaModel implements DBCQueryTransfo
} }
@Override @Override
public GenericTableColumn createTableColumnImpl(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) { public GenericTableColumn createTableColumnImpl(@NotNull DBRProgressMonitor monitor, JDBCResultSet dbResult, @NotNull GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) {
// Check for type length modifier // Check for type length modifier
Matcher matcher = TYPE_WITH_LENGTH_PATTERN.matcher(typeName); Matcher matcher = TYPE_WITH_LENGTH_PATTERN.matcher(typeName);
if (matcher.matches()) { if (matcher.matches()) {
......
...@@ -92,7 +92,7 @@ public class VerticaMetaModel extends GenericMetaModel implements DBCQueryTransf ...@@ -92,7 +92,7 @@ public class VerticaMetaModel extends GenericMetaModel implements DBCQueryTransf
} }
@Override @Override
public GenericTableColumn createTableColumnImpl(DBRProgressMonitor monitor, GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException { public GenericTableColumn createTableColumnImpl(@NotNull DBRProgressMonitor monitor, JDBCResultSet dbResult, @NotNull GenericTableBase table, String columnName, String typeName, int valueType, int sourceType, int ordinalPos, long columnSize, long charLength, Integer scale, Integer precision, int radix, boolean notNull, String remarks, String defaultValue, boolean autoIncrement, boolean autoGenerated) throws DBException {
return new VerticaTableColumn(table, return new VerticaTableColumn(table,
columnName, columnName,
typeName, valueType, sourceType, ordinalPos, typeName, valueType, sourceType, ordinalPos,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册