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

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