Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
59a60bab
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
59a60bab
编写于
9月 29, 2020
作者:
S
Serge Rider
提交者:
GitHub
9月 29, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #9908 from dbeaver/postgrecolumnimportfix
cast import column classes fixed
上级
87fb1a70
f14f81a9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
60 addition
and
55 deletion
+60
-55
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreTableColumnManager.java
...beaver/ext/postgresql/edit/PostgreTableColumnManager.java
+59
-54
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDialect.java
...rg/jkiss/dbeaver/ext/postgresql/model/PostgreDialect.java
+1
-1
未找到文件。
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreTableColumnManager.java
浏览文件 @
59a60bab
...
...
@@ -34,6 +34,7 @@ import org.jkiss.dbeaver.model.impl.sql.edit.struct.SQLTableColumnManager;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.model.struct.DBSTypedObject
;
import
org.jkiss.dbeaver.model.struct.cache.DBSObjectCache
;
import
org.jkiss.utils.ArrayUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -75,69 +76,73 @@ public class PostgreTableColumnManager extends SQLTableColumnManager<PostgreTabl
getColumnDataTypeModifiers
(
monitor
,
column
,
sql
);
};
public
static
StringBuilder
getColumnDataTypeModifiers
(
DBRProgressMonitor
monitor
,
PostgreTableColumn
column
,
StringBuilder
sql
)
{
final
PostgreDataType
dataType
=
column
.
getDataType
();
final
PostgreDataType
rawType
=
null
;
//dataType.getElementType(monitor);
switch
(
dataType
.
getDataKind
())
{
case
STRING:
final
long
length
=
column
.
getMaxLength
();
if
(
length
>
0
&&
length
<
Integer
.
MAX_VALUE
)
{
sql
.
append
(
'('
).
append
(
length
).
append
(
')'
);
}
break
;
case
NUMERIC:
if
(
dataType
.
getTypeID
()
==
Types
.
NUMERIC
)
{
final
int
precision
=
CommonUtils
.
toInt
(
column
.
getPrecision
());
final
int
scale
=
CommonUtils
.
toInt
(
column
.
getScale
());
if
(
scale
>
0
||
precision
>
0
)
{
sql
.
append
(
'('
);
if
(
precision
>
0
)
{
sql
.
append
(
precision
);
}
if
(
scale
>
0
)
{
public
static
StringBuilder
getColumnDataTypeModifiers
(
DBRProgressMonitor
monitor
,
DBSTypedObject
column
,
StringBuilder
sql
)
{
if
(
column
instanceof
PostgreTableColumn
)
{
PostgreTableColumn
postgreColumn
=
(
PostgreTableColumn
)
column
;
final
PostgreDataType
dataType
=
postgreColumn
.
getDataType
();
final
PostgreDataType
rawType
=
null
;
//dataType.getElementType(monitor);
switch
(
dataType
.
getDataKind
())
{
case
STRING:
final
long
length
=
postgreColumn
.
getMaxLength
();
if
(
length
>
0
&&
length
<
Integer
.
MAX_VALUE
)
{
sql
.
append
(
'('
).
append
(
length
).
append
(
')'
);
}
break
;
case
NUMERIC:
if
(
dataType
.
getTypeID
()
==
Types
.
NUMERIC
)
{
final
int
precision
=
CommonUtils
.
toInt
(
postgreColumn
.
getPrecision
());
final
int
scale
=
CommonUtils
.
toInt
(
postgreColumn
.
getScale
());
if
(
scale
>
0
||
precision
>
0
)
{
sql
.
append
(
'('
);
if
(
precision
>
0
)
{
sql
.
append
(
','
);
sql
.
append
(
precision
);
}
sql
.
append
(
scale
);
if
(
scale
>
0
)
{
if
(
precision
>
0
)
{
sql
.
append
(
','
);
}
sql
.
append
(
scale
);
}
sql
.
append
(
')'
);
}
sql
.
append
(
')'
);
}
}
break
;
case
DATETIME:
final
int
scale
=
CommonUtils
.
toInt
(
column
.
getScale
()
);
String
typeName
=
dataType
.
getName
();
if
(
typeName
.
startsWith
(
PostgreConstants
.
TYPE_TIMESTAMP
)
||
typeName
.
equals
(
PostgreConstants
.
TYPE_TIME
)
)
{
if
(
scale
<
6
)
{
sql
.
append
(
'('
).
append
(
scale
).
append
(
')'
);
break
;
case
DATETIME:
final
int
scale
=
CommonUtils
.
toInt
(
postgreColumn
.
getScale
());
String
typeName
=
dataType
.
getName
(
);
if
(
typeName
.
startsWith
(
PostgreConstants
.
TYPE_TIMESTAMP
)
||
typeName
.
equals
(
PostgreConstants
.
TYPE_TIME
))
{
if
(
scale
<
6
)
{
sql
.
append
(
'('
).
append
(
scale
).
append
(
')'
);
}
}
}
if
(
typeName
.
equals
(
PostgreConstants
.
TYPE_INTERVAL
))
{
final
String
precision
=
column
.
getIntervalTypeField
(
);
sql
.
append
(
' '
).
append
(
precision
);
if
(
scale
>=
0
&&
scale
<
7
)
{
sql
.
append
(
'('
).
append
(
scale
).
append
(
')'
);
if
(
typeName
.
equals
(
PostgreConstants
.
TYPE_INTERVAL
))
{
final
String
precision
=
postgreColumn
.
getIntervalTypeField
();
sql
.
append
(
' '
).
append
(
precision
);
if
(
scale
>=
0
&&
scale
<
7
)
{
sql
.
append
(
'('
).
append
(
scale
).
append
(
')'
);
}
}
}
}
if
(
PostgreUtils
.
isGISDataType
(
column
.
getTypeName
()))
{
try
{
String
geometryType
=
column
.
getAttributeGeometryType
(
monitor
);
int
geometrySRID
=
column
.
getAttributeGeometrySRID
(
monitor
);
if
(
geometryType
!=
null
&&
!
PostgreConstants
.
TYPE_GEOMETRY
.
equalsIgnoreCase
(
geometryType
)
&&
!
PostgreConstants
.
TYPE_GEOGRAPHY
.
equalsIgnoreCase
(
geometryType
))
{
// If data type is exactly GEOMETRY or GEOGRAPHY then it doesn't have qualifiers
sql
.
append
(
"("
).
append
(
geometryType
);
if
(
geometrySRID
>
0
)
{
sql
.
append
(
", "
).
append
(
geometrySRID
);
}
if
(
PostgreUtils
.
isGISDataType
(
postgreColumn
.
getTypeName
()))
{
try
{
String
geometryType
=
postgreColumn
.
getAttributeGeometryType
(
monitor
);
int
geometrySRID
=
postgreColumn
.
getAttributeGeometrySRID
(
monitor
);
if
(
geometryType
!=
null
&&
!
PostgreConstants
.
TYPE_GEOMETRY
.
equalsIgnoreCase
(
geometryType
)
&&
!
PostgreConstants
.
TYPE_GEOGRAPHY
.
equalsIgnoreCase
(
geometryType
))
{
// If data type is exactly GEOMETRY or GEOGRAPHY then it doesn't have qualifiers
sql
.
append
(
"("
).
append
(
geometryType
);
if
(
geometrySRID
>
0
)
{
sql
.
append
(
", "
).
append
(
geometrySRID
);
}
sql
.
append
(
")"
);
}
sql
.
append
(
")"
);
}
catch
(
DBCException
e
)
{
log
.
debug
(
e
);
}
}
catch
(
DBCException
e
)
{
log
.
debug
(
e
);
}
}
if
(
rawType
!=
null
)
{
sql
.
append
(
"[]"
);
if
(
rawType
!=
null
)
{
sql
.
append
(
"[]"
);
}
return
sql
;
}
return
sql
;
}
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDialect.java
浏览文件 @
59a60bab
...
...
@@ -847,7 +847,7 @@ public class PostgreDialect extends JDBCSQLDialect implements TPRuleProvider {
@Override
public
String
getColumnTypeModifiers
(
@NotNull
DBPDataSource
dataSource
,
@NotNull
DBSTypedObject
column
,
@NotNull
String
typeName
,
@NotNull
DBPDataKind
dataKind
)
{
StringBuilder
columnModifier
=
PostgreTableColumnManager
.
getColumnDataTypeModifiers
(
new
VoidProgressMonitor
(),
(
PostgreTableColumn
)
column
,
new
StringBuilder
());
StringBuilder
columnModifier
=
PostgreTableColumnManager
.
getColumnDataTypeModifiers
(
new
VoidProgressMonitor
(),
column
,
new
StringBuilder
());
if
(
columnModifier
.
length
()
!=
0
)
{
return
columnModifier
.
toString
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录