Android下的配置管理之道之gerrit之psql數據庫表介紹

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章