Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
077aefea
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
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,发现更多精彩内容 >>
提交
077aefea
编写于
8月 25, 2019
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6583 SQL Server: column default value change support
Former-commit-id:
39a1f8af
上级
f859ba2c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
9 deletion
+38
-9
plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/edit/SQLServerTableColumnManager.java
...s/dbeaver/ext/mssql/edit/SQLServerTableColumnManager.java
+38
-9
未找到文件。
plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/edit/SQLServerTableColumnManager.java
浏览文件 @
077aefea
...
...
@@ -28,8 +28,10 @@ import org.jkiss.dbeaver.model.edit.DBECommandContext;
import
org.jkiss.dbeaver.model.edit.DBEObjectRenamer
;
import
org.jkiss.dbeaver.model.edit.DBEPersistAction
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.exec.jdbc.JDBCSession
;
import
org.jkiss.dbeaver.model.impl.DBSObjectCache
;
import
org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils
;
import
org.jkiss.dbeaver.model.impl.sql.edit.struct.SQLTableColumnManager
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
...
...
@@ -37,6 +39,7 @@ import org.jkiss.dbeaver.model.struct.DBSDataType;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.utils.CommonUtils
;
import
java.sql.SQLException
;
import
java.sql.Types
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -69,10 +72,6 @@ public class SQLServerTableColumnManager extends SQLTableColumnManager<SQLServer
protected
final
ColumnModifier
<
SQLServerTableColumn
>
SQLServerDefaultModifier
=
(
monitor
,
column
,
sql
,
command
)
->
{
if
(!
column
.
isPersisted
())
{
DefaultModifier
.
appendModifier
(
monitor
,
column
,
sql
,
command
);
}
else
{
// Modify existing column
// TODO: implement default constraint create/drop
DefaultModifier
.
appendModifier
(
monitor
,
column
,
sql
,
command
);
}
};
...
...
@@ -109,12 +108,36 @@ public class SQLServerTableColumnManager extends SQLTableColumnManager<SQLServer
protected
void
addObjectModifyActions
(
DBRProgressMonitor
monitor
,
List
<
DBEPersistAction
>
actionList
,
ObjectChangeCommand
command
,
Map
<
String
,
Object
>
options
)
{
final
SQLServerTableColumn
column
=
command
.
getObject
();
int
totalProps
=
command
.
getProperties
().
size
();
boolean
hasComment
=
command
.
getProperty
(
DBConstants
.
PROP_ID_DESCRIPTION
)
!=
null
;
if
(!
hasComment
||
command
.
getProperties
().
size
()
>
1
)
{
actionList
.
add
(
new
SQLDatabasePersistAction
(
"Modify column"
,
"ALTER TABLE "
+
column
.
getTable
().
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
+
//$NON-NLS-1$
" ALTER COLUMN "
+
getNestedDeclaration
(
monitor
,
column
.
getTable
(),
command
,
options
)));
//$NON-NLS-1$
if
(
hasComment
)
totalProps
--;
if
(
column
.
isPersisted
()
&&
command
.
hasProperty
(
"defaultValue"
))
{
totalProps
--;
// [Re]create default constraint. Classic MS-style pain in the ass
String
oldConstraintName
=
null
;
try
(
JDBCSession
session
=
DBUtils
.
openMetaSession
(
monitor
,
column
,
"Read default constraint"
))
{
oldConstraintName
=
JDBCUtils
.
queryString
(
session
,
"SELECT name FROM "
+
SQLServerUtils
.
getSystemTableName
(
column
.
getTable
().
getDatabase
(),
"DEFAULT_CONSTRAINTS"
)
+
" WHERE PARENT_OBJECT_ID = ? AND PARENT_COLUMN_ID = ?"
,
column
.
getTable
().
getObjectId
(),
column
.
getObjectId
());
}
catch
(
SQLException
e
)
{
log
.
error
(
e
);
}
if
(
oldConstraintName
!=
null
)
{
actionList
.
add
(
new
SQLDatabasePersistAction
(
"Drop default constraint"
,
"ALTER TABLE "
+
column
.
getTable
().
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
+
" DROP CONSTRAINT "
+
DBUtils
.
getQuotedIdentifier
(
column
.
getDataSource
(),
oldConstraintName
)
//$NON-NLS-1$
));
}
String
defaultValue
=
column
.
getDefaultValue
();
if
(!
CommonUtils
.
isEmpty
(
defaultValue
))
{
StringBuilder
sql
=
new
StringBuilder
();
sql
.
append
(
"ALTER TABLE "
).
append
(
column
.
getTable
().
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)).
append
(
" ADD "
);
DefaultModifier
.
appendModifier
(
monitor
,
column
,
sql
,
command
);
sql
.
append
(
" FOR "
).
append
(
DBUtils
.
getQuotedIdentifier
(
column
));
actionList
.
add
(
new
SQLDatabasePersistAction
(
"Alter default value"
,
sql
.
toString
()));
//$NON-NLS-1$
}
}
if
(
hasComment
)
{
boolean
isUpdate
=
SQLServerUtils
.
isCommentSet
(
...
...
@@ -132,6 +155,12 @@ public class SQLServerTableColumnManager extends SQLTableColumnManager<SQLServer
" 'table', '"
+
column
.
getTable
().
getName
()
+
"',"
+
" 'column', '"
+
column
.
getName
()
+
"'"
));
}
if
(
totalProps
>
0
)
{
actionList
.
add
(
new
SQLDatabasePersistAction
(
"Modify column"
,
"ALTER TABLE "
+
column
.
getTable
().
getFullyQualifiedName
(
DBPEvaluationContext
.
DDL
)
+
//$NON-NLS-1$
" ALTER COLUMN "
+
getNestedDeclaration
(
monitor
,
column
.
getTable
(),
command
,
options
)));
//$NON-NLS-1$
}
}
@Override
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录