gerrit 2.12.x 版本 數據庫表介紹 之 postgresql
下面是2.12.x版本的 數據庫表
List of relations
TABLE_SCHEM | TABLE_NAME | TABLE_TYPE
------------+-----------------------------+-----------
public | account_external_ids | TABLE
public | account_group_by_id | TABLE
public | account_group_by_id_aud | TABLE
public | account_group_members | TABLE
public | account_group_members_audit | TABLE
public | account_group_names | TABLE
public | account_groups | TABLE
public | account_patch_reviews | TABLE
public | account_project_watches | TABLE
public | account_ssh_keys | TABLE
public | accounts | TABLE
public | change_messages | TABLE
public | changes | TABLE
public | patch_comments | TABLE
public | patch_set_approvals | TABLE
public | patch_sets | TABLE
public | schema_version | TABLE
public | starred_changes | TABLE
public | submodule_subscriptions | TABLE
public | system_config | TABLE
accounts表
這個表是保存賬號相關信息的
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='accounts';
ordinal_position | column_name | data_type | column_default
-----------------+-------------------------------+--------------------------+---------------
1 | registered_on | timestamp with time zone | NULL
2 | full_name | character varying | NULL
3 | preferred_email | character varying | NULL
5 | maximum_page_size | smallint | 0
6 | show_site_header | character | 'N'::bpchar
7 | use_flash_clipboard | character | 'N'::bpchar
8 | download_url | character varying | NULL
9 | download_command | character varying | NULL
10 | copy_self_on_email | character | 'N'::bpchar
11 | date_format | character varying | NULL
12 | time_format | character varying | NULL
13 | relative_date_in_change_table | character | 'N'::bpchar
14 | diff_view | character varying | NULL
15 | size_bar_in_change_table | character | 'N'::bpchar
16 | legacycid_in_change_table | character | 'N'::bpchar
17 | review_category_strategy | character varying | NULL
18 | mute_common_path_prefixes | character | 'N'::bpchar
19 | inactive | character | 'N'::bpchar
20 | account_id | integer | 0
select account_id, full_name, preferred_email from accounts where account_id=1000000;
account_id | full_name | preferred_email
------------+------------+--------------------------
1000000 | xxxxxxx xx | xxxxxx.xx@xxxxxxxxx.com
account_id 是個數字,第一次登錄gerrit的時候會自動分配一個,這個基本上是賬號的唯一標識了。第一個登錄的賬號id是1000000,後續的依次累加。
full_name 是 全名,顯示的名稱,和登錄時候填寫的賬號可以是不一樣的,這裏也可以是中文的,如果是用的ldap認證的,這裏就是ldap裏面的全名。
preferred_email 是郵箱地址,如果是用的ldap認證的,這裏就是ldap裏面的郵箱。
inactive 表示這個賬號是否可用,取值 'N' 和 'Y', N表示不能使用,不能登錄,不能訪問ssh下代碼等。表示賬號被禁用。離職的員工可用把賬號禁用了。
account_external_ids 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_external_ids';
ordinal_position | column_name | data_type | column_default
-----------------+---------------+-------------------+----------------------
1 | account_id | integer | 0
2 | email_address | character varying | NULL
3 | password | character varying | NULL
4 | external_id | character varying | ''::character varying
account_groups 表
這個是羣組相關的表。還有個account_group_names表和他對應的,這個表只存放了羣組名稱。
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_groups';
ordinal_position | column_name | data_type | column_default
-----------------+------------------+-------------------+----------------------
1 | name | character varying | ''::character varying
2 | description | text | NULL
3 | visible_to_all | character | 'N'::bpchar
4 | group_uuid | character varying | ''::character varying
5 | owner_group_uuid | character varying | ''::character varying
6 | group_id | integer | 0
account_group_names 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_group_names';
ordinal_position | column_name | data_type | column_default
-----------------+-------------+-------------------+----------------------
1 | group_id | integer | 0
2 | name | character varying | ''::character varying
account_group_by_id 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_group_by_id';
ordinal_position | column_name | data_type | column_default
-----------------+--------------+-------------------+----------------------
1 | group_id | integer | 0
2 | include_uuid | character varying | ''::character varying
account_group_members 表
這個表記錄了哪些賬號在哪個羣組裏面。
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_group_members';
ordinal_position | column_name | data_type | column_default
-----------------+-------------+-----------+---------------
1 | account_id | integer | 0
2 | group_id | integer | 0
account_patch_reviews 表
這個表格記錄了某個賬號review了哪些文件,file_name 就是review的文件名稱,
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_patch_reviews';
ordinal_position | column_name | data_type | column_default
-----------------+--------------+-------------------+----------------------
1 | account_id | integer | 0
2 | change_id | integer | 0
3 | patch_set_id | integer | 0
4 | file_name | character varying | ''::character varying
account_project_watches 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_project_watches';
ordinal_position | column_name | data_type | column_default
-----------------+--------------------------+-------------------+----------------------
1 | notify_new_changes | character | 'N'::bpchar
2 | notify_all_comments | character | 'N'::bpchar
3 | notify_submitted_changes | character | 'N'::bpchar
4 | notify_new_patch_sets | character | 'N'::bpchar
5 | notify_abandoned_changes | character | 'N'::bpchar
6 | account_id | integer | 0
7 | project_name | character varying | ''::character varying
8 | filter | character varying | ''::character varying
account_ssh_keys 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='account_ssh_keys';
ordinal_position | column_name | data_type | column_default
-----------------+----------------+-----------+---------------
1 | ssh_public_key | text | ''::text
2 | valid | character | 'N'::bpchar
3 | account_id | integer | 0
4 | seq | integer | 0
changes 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='changes';
ordinal_position | column_name | data_type | column_default
-----------------+----------------------+--------------------------+----------------------
1 | change_key | character varying | ''::character varying
2 | created_on | timestamp with time zone | NULL
3 | last_updated_on | timestamp with time zone | NULL
4 | owner_account_id | integer | 0
5 | dest_project_name | character varying | ''::character varying
6 | dest_branch_name | character varying | ''::character varying
7 | status | character | ' '::bpchar
8 | current_patch_set_id | integer | 0
9 | subject | character varying | ''::character varying
10 | topic | character varying | NULL
11 | original_subject | character varying | NULL
12 | row_version | integer | 0
13 | change_id | integer | 0
14 | submission_id | character varying | NULL
change_messages 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='change_messages';
ordinal_position | column_name | data_type | column_default
-----------------+-----------------------+--------------------------+----------------------
1 | author_id | integer | NULL
2 | written_on | timestamp with time zone | NULL
3 | message | text | NULL
4 | patchset_change_id | integer | NULL
5 | patchset_patch_set_id | integer | NULL
6 | change_id | integer | 0
7 | uuid | character varying | ''::character varying
patch_sets 表
gerrit> SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='patch_sets';
ordinal_position | column_name | data_type | column_default
-----------------+---------------------+--------------------------+---------------
1 | revision | character varying | NULL
2 | uploader_account_id | integer | 0
3 | created_on | timestamp with time zone | NULL
4 | draft | character | 'N'::bpchar
5 | change_id | integer | 0
6 | patch_set_id | integer | 0
7 | groups | character varying | NULL
8 | push_certficate | text | NULL
patch_comments 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='patch_comments';
ordinal_position | column_name | data_type | column_default
-----------------+-----------------------+--------------------------+----------------------
1 | line_nbr | integer | 0
2 | author_id | integer | 0
3 | written_on | timestamp with time zone | NULL
4 | status | character | ' '::bpchar
5 | side | smallint | 0
6 | message | text | NULL
7 | parent_uuid | character varying | NULL
8 | range_start_line | integer | NULL
9 | range_start_character | integer | NULL
10 | range_end_line | integer | NULL
11 | range_end_character | integer | NULL
12 | change_id | integer | 0
13 | patch_set_id | integer | 0
14 | file_name | character varying | ''::character varying
15 | uuid | character varying | ''::character varying
patch_set_approvals 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='patch_set_approvals';
ordinal_position | column_name | data_type | column_default
-----------------+--------------+--------------------------+----------------------
1 | value | smallint | 0
2 | granted | timestamp with time zone | NULL
3 | change_id | integer | 0
4 | patch_set_id | integer | 0
5 | account_id | integer | 0
6 | category_id | character varying | ''::character varying
starred_changes 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='starred_changes';
ordinal_position | column_name | data_type | column_default
-----------------+-------------+-----------+---------------
1 | account_id | integer | 0
2 | change_id | integer | 0
submodule_subscriptions 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='submodule_subscriptions';
ordinal_position | column_name | data_type | column_default
-----------------+----------------------------+-------------------+----------------------
1 | submodule_project_name | character varying | ''::character varying
2 | submodule_branch_name | character varying | ''::character varying
3 | super_project_project_name | character varying | ''::character varying
4 | super_project_branch_name | character varying | ''::character varying
5 | submodule_path | character varying | ''::character varying
schema_version 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='schema_version';
ordinal_position | column_name | data_type | column_default
-----------------+-------------+-------------------+----------------------
1 | version_nbr | integer | 0
2 | singleton | character varying | ''::character varying
system_config 表
SELECT ordinal_position,column_name, data_type, column_default FROM information_schema.columns WHERE table_name ='system_config';
ordinal_position | column_name | data_type | column_default
-----------------+----------------------------+-------------------+----------------------
1 | register_email_private_key | character varying | NULL
2 | site_path | character varying | NULL
3 | admin_group_id | integer | NULL
4 | anonymous_group_id | integer | NULL
5 | registered_group_id | integer | NULL
6 | wild_project_name | character varying | NULL
7 | batch_users_group_id | integer | NULL
8 | owner_group_id | integer | NULL
9 | admin_group_uuid | character varying | NULL
10 | batch_users_group_uuid | character varying | NULL
11 | singleton | character varying | ''::character varying
數據庫清理
下面記錄一下對錶格數據進行清理的sql語句
account_group_by_id_aud 表 和 account_group_members_audit 表 可以直接清空,
裏面記錄的是添加賬號到某個組之類的歷史操作。沒什麼用的。
account_patch_reviews 表格記錄的是 每個賬號 是 review 某個文件的 操作記錄,也沒什麼太大作用。
如果你打開review了某個文件,這個文件前面有個對號會勾上的。
account_project_watches 表是記錄每個賬號監聽哪個項目有提交發郵件的 也可以清空。
changes,表是記錄提交的一個主表。
change_messages,patch_comments,patch_set_approvals,patch_sets這個幾個表都要個change_id列是引用了changes表的。
change_messages 表是 系統自動打上的註釋類的信息的。
patch_comments 表是 員工自己寫的註釋類信息的。
patch_set_approvals 表是記錄review、verify、submit歷史信息的。
patch_sets 表是記錄 revision,change_id, account_id 對應的歷史信息的。
starred_changes 表記錄是 加星的 提交,也沒什麼用,可以直接清空。
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
order by account_id
select * from account_group_names where group_id not in (select group_id from account_groups)
#刪除不需要賬號下面的提交,先刪除changes表格中的基類,其他的引用了changes表格的使用not in 來刪除
select * from changes where owner_account_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
#刪除不需要賬號下面的提交
select * from change_messages where author_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
select * from change_messages where change_id not in (select change_id from changes)
#刪除不需要賬號下面的提交
select * from patch_comments where author_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
select * from patch_comments where change_id not in (select change_id from changes)
#刪除不需要賬號下面的提交
select * from patch_set_approvals where account_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
select * from patch_set_approvals where change_id not in (select change_id from changes)
#刪除不需要賬號下面的提交
select * from patch_sets where account_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
select * from patch_sets where change_id not in (select change_id from changes)
#刪除不需要賬號下面的提交
select * from account_external_ids where account_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
#刪除不需要賬號下面的提交
select * from account_ssh_keys where account_id in (
select account_id
from accounts where
preferred_email like '%cxxxxxxxxx.com%' or
preferred_email like '%kxxxxxxxxx.com%' or
preferred_email like '%yxxxxxxxxx.com%' or
preferred_email like '%zxxxxxxxxx.com%' or
preferred_email is null
)
# 先使用這個查看所有分支名稱,然後挑出不需要的分支進行刪除
select distinct dest_branch_name from changes order by dest_branch_name
# 刪除不需要的分支的提交
select * from changes where
dest_branch_name like '%refs/heads/alchemy%' or
dest_branch_name like '%refs/heads/ares%' or
dest_branch_name like '%refs/heads/bakcup/%' or
dest_branch_name like '%refs/heads/bak/%' or
dest_branch_name like '%refs/heads/camry%' or
dest_branch_name like '%refs/heads/castor%' or
dest_branch_name like '%refs/heads/civic%' or
dest_branch_name like '%refs/heads/clover%' or
dest_branch_name like '%refs/heads/msm8909%' or
dest_branch_name like '%refs/heads/msm8953%' or
dest_branch_name like '%refs/heads/msm8976%' or
dest_branch_name like '%refs/heads/msm8996%' or
dest_branch_name like '%refs/heads/msm8998%' or
dest_branch_name like '%refs/heads/prague%' or
dest_branch_name like '%refs/heads/razer%' or
dest_branch_name like '%refs/heads/ruby%' or
dest_branch_name like '%refs/heads/victor%' or
dest_branch_name like '%refs/heads/zl%' or
dest_branch_name like '%refs/heads/zs%' or
dest_branch_name like '%refs/hy%' or
dest_branch_name like '%refs/meta/config%'
# 刪除 多久之前的 處於abandon狀態的提交
select * from changes where status='A' and created_on < '2018-01-01' order by created_on
update 2018/11/15