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.

  • Close this issue

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:    http://gitlabhost.tld
HTTP Clone URL: http://gitlabhost.tld/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 Aug 28, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading