Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
5725b376
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5725b376
编写于
6月 22, 2017
作者:
L
Lin Jen-Shin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove duplicated records and add unique constraint
上级
d9ad56f3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
95 addition
and
2 deletion
+95
-2
db/migrate/20170622135451_remove_duplicated_variable.rb
db/migrate/20170622135451_remove_duplicated_variable.rb
+45
-0
db/migrate/20170622135628_add_environment_scope_to_ci_variables.rb
...e/20170622135628_add_environment_scope_to_ci_variables.rb
+0
-0
db/migrate/20170622135728_add_unique_constraint_to_ci_variables.rb
...e/20170622135728_add_unique_constraint_to_ci_variables.rb
+23
-0
db/schema.rb
db/schema.rb
+2
-2
spec/migrations/remove_duplicated_variable_spec.rb
spec/migrations/remove_duplicated_variable_spec.rb
+25
-0
未找到文件。
db/migrate/20170622135451_remove_duplicated_variable.rb
0 → 100644
浏览文件 @
5725b376
class
RemoveDuplicatedVariable
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
if
Gitlab
::
Database
.
postgresql?
execute
<<~
SQL
DELETE FROM ci_variables var USING (
#{
duplicated_ids
}
) dup
#{
join_conditions
}
SQL
else
execute
<<~
SQL
DELETE var FROM ci_variables var INNER JOIN (
#{
duplicated_ids
}
) dup
#{
join_conditions
}
SQL
end
end
def
down
# noop
end
def
duplicated_ids
<<~
SQL
SELECT MAX(id) AS id,
#{
key
}
, project_id
FROM ci_variables GROUP BY
#{
key
}
, project_id
SQL
end
def
join_conditions
<<~
SQL
WHERE var.key = dup.key
AND var.project_id = dup.project_id
AND var.id <> dup.id
SQL
end
def
key
# key needs to be quoted in MySQL
quote_column_name
(
'key'
)
end
end
db/migrate/201706
12150426
_add_environment_scope_to_ci_variables.rb
→
db/migrate/201706
22135628
_add_environment_scope_to_ci_variables.rb
浏览文件 @
5725b376
文件已移动
db/migrate/20170622135728_add_unique_constraint_to_ci_variables.rb
0 → 100644
浏览文件 @
5725b376
class
AddUniqueConstraintToCiVariables
<
ActiveRecord
::
Migration
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
unless
index_exists?
(
:ci_variables
,
columns
)
add_concurrent_index
(
:ci_variables
,
columns
,
unique:
true
)
end
end
def
down
if
index_exists?
(
:ci_variables
,
columns
)
remove_concurrent_index
(
:ci_variables
,
columns
)
end
end
def
columns
@columns
||=
[
:project_id
,
:key
,
:environment_scope
]
end
end
db/schema.rb
浏览文件 @
5725b376
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
2017062
1102400
)
do
ActiveRecord
::
Schema
.
define
(
version:
2017062
2135728
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -377,7 +377,7 @@ ActiveRecord::Schema.define(version: 20170621102400) do
t
.
string
"environment_scope"
,
default:
"*"
,
null:
false
end
add_index
"ci_variables"
,
[
"project_id"
],
name:
"index_ci_variables_on_project_id"
,
using: :btree
add_index
"ci_variables"
,
[
"project_id"
,
"key"
,
"environment_scope"
],
name:
"index_ci_variables_on_project_id_and_key_and_environment_scope"
,
unique:
true
,
using: :btree
create_table
"container_repositories"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
null:
false
...
...
spec/migrations/remove_duplicated_variable_spec.rb
0 → 100644
浏览文件 @
5725b376
require
'spec_helper'
require
Rails
.
root
.
join
(
'db'
,
'migrate'
,
'20170622135451_remove_duplicated_variable.rb'
)
describe
RemoveDuplicatedVariable
,
:migration
do
let
(
:variables
)
{
table
(
:ci_variables
)
}
let
(
:projects
)
{
table
(
:projects
)
}
before
do
projects
.
create!
(
id:
1
)
variables
.
create!
(
id:
1
,
key:
'key1'
,
project_id:
1
)
variables
.
create!
(
id:
2
,
key:
'key2'
,
project_id:
1
)
variables
.
create!
(
id:
3
,
key:
'keyX'
,
project_id:
1
)
variables
.
create!
(
id:
4
,
key:
'keyX'
,
project_id:
1
)
variables
.
create!
(
id:
5
,
key:
'keyY'
,
project_id:
1
)
variables
.
create!
(
id:
6
,
key:
'keyX'
,
project_id:
1
)
variables
.
create!
(
id:
7
,
key:
'key7'
,
project_id:
1
)
variables
.
create!
(
id:
8
,
key:
'keyY'
,
project_id:
1
)
end
it
'correctly remove duplicated records with smaller id'
do
migrate!
expect
(
variables
.
pluck
(
:id
)).
to
contain_exactly
(
1
,
2
,
6
,
7
,
8
)
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录