view · edit · sidebar · attach · print · history

Index | Niklaus.20240130-ruby-330 >>

20260112-pgUpgrade

Summary

Commits

oddb.org:

Index

Upgrade to PostgreSQL 18.1

  • See also this github issue 335
  • created the Attach:prepare_pg_upgrade.txt, which does the following
    • Drops column oid in databases via DROP_IN_DBS
    • Drops all roles defined via ROLES_TO_DROP
    • Stop the old postgres (assumning its installe via devenv)
  • Before running pg_upgrade we must run pg_checksums --disable, because checksums are now enable by default under PostgreSQL 18
  • Created and let run Attach:run_pg_upgrade (for a devenv environment, for other linux environments must change definitions old-bin/datadir) After that the pg_upgrade went without problems, when we removed some roles.

Starting migeld I get the following error

/opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbd-pg-0.5.9/lib/dbd/pg/statement.rb:62:in 'DBI::DBD::Pg::Statement#execute': ERROR:  column pg_attrdef.adsrc does not exist (DBI::ProgrammingError)
LINE 2:             SELECT pg_attrdef.adsrc, pg_attribute.attname 

        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbi-0.5.9/lib/dbi/base_classes/database.rb:96:in 'DBI::BaseDatabase#execute'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbi-0.5.9/lib/dbi/handles/database.rb:81:in 'DBI::DatabaseHandle#execute'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbi-0.5.9/lib/dbi/handles/database.rb:128:in 'DBI::DatabaseHandle#select_all'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbd-pg-0.5.9/lib/dbd/pg/database.rb:170:in 'DBI::DBD::Pg::Database#columns'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/ydbi-0.5.9/lib/dbi/handles/database.rb:161:in 'DBI::DatabaseHandle#columns'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/odba-1.1.9/lib/odba/connection_pool.rb:39:in 'block in ODBA::ConnectionPool#method_missing'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/odba-1.1.9/lib/odba/connection_pool.rb:29:in 'ODBA::ConnectionPool#next_connection'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/odba-1.1.9/lib/odba/connection_pool.rb:38:in 'ODBA::ConnectionPool#method_missing'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/odba-1.1.9/lib/odba/storage.rb:535:in 'ODBA::Storage#setup'
        from /opt/src/oddb.org-pg_upgrade/.devenv/state/.bundle/ruby/3.4.0/gems/odba-1.1.9/lib/odba/cache.rb:483:in 'ODBA::Cache#setup'
        from /opt/src/oddb.org-pg_upgrade/migel/lib/migel/persistence/odba.rb:21:in '<module:Migel>'
        from /opt/src/oddb.org-pg_upgrade/migel/lib/migel/persistence/odba.rb:15:in '<top (required)>'
        from /nix/store/j47kaa7lpd11wk2p41x1j14si7z8r1lc-ruby-3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'Kernel.require'
        from /nix/store/j47kaa7lpd11wk2p41x1j14si7z8r1lc-ruby-3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in Kernel#replace_require'
        from /opt/src/oddb.org-pg_upgrade/migel/lib/migel/persistence.rb:9:in '<module:Migel>'
        from /opt/src/oddb.org-pg_upgrade/migel/lib/migel/persistence.rb:8:in '<top (required)>'
        from /nix/store/j47kaa7lpd11wk2p41x1j14si7z8r1lc-ruby-3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'Kernel.require'
        from /nix/store/j47kaa7lpd11wk2p41x1j14si7z8r1lc-ruby-3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in Kernel#replace_require'
        from migel/bin/migeld:10:in '<main>'

as in https://www.postgresql.org/docs/12/release-12.html I see

Remove obsolete pg_attrdef.adsrc column (Peter Eisentraut) §

This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a default-value expression from pg_attrdef is pg_get_expr(adbin, adrelid).

This could be fixed by updating YUS from 1.0.6 to 1.0.7 with a manually correct path for the used yus.yml (NixOS does not allow creating /etc/yus/yus.yml outside the configuration) Had to start yus, migel and rackup by hand in different terminals. Then the spec/smoketest had no longer any problem to finish. Creating dump with PG 18. Running import_daily, import_swissmedic, import_bsv and all watir spec. This will take many hours.

view · edit · sidebar · attach · print · history
Page last modified on January 12, 2026, at 05:56 PM