Control: retitle -1 bullseye-pu: package schleuder/3.6.0-3+deb11u1
--

Hi,

The proposed package used an incorrect versioning scheme targeting
buster, not bullseye.

The attached debdiff is fixed in this regard.

Sorry for this noise.

Cheers,
Georg
diffstat for schleuder-3.6.0 schleuder-3.6.0

 changelog                                               |   12 ++
 patches/0031-db-change-boolean-values-to-integers.patch |   77 ++++++++++++++++
 patches/series                                          |    1 
 3 files changed, 90 insertions(+)

diff -Nru schleuder-3.6.0/debian/changelog schleuder-3.6.0/debian/changelog
--- schleuder-3.6.0/debian/changelog    2021-07-29 20:36:52.000000000 +0000
+++ schleuder-3.6.0/debian/changelog    2021-12-26 16:28:29.000000000 +0000
@@ -1,3 +1,15 @@
+schleuder (3.6.0-3+deb11u1) bullseye; urgency=medium
+
+  * debian/patches:
+    - Pull in upstream patch to migrate boolean values to integers, if the
+      ActiveRecord SQLite3 connection adapter is in use. Since ActiveRecord >=
+      6.0, the relevant code relies on boolean serialization to use 1 and 0,
+      but does not natively recognize 't' and 'f' as booleans were previously
+      serialized. This change made existing mailing lists fail, if people were
+      upgrading buster to bullseye. (Closes: #100262)
+
+ -- Georg Faerber <ge...@debian.org>  Sun, 26 Dec 2021 16:28:29 +0000
+
 schleuder (3.6.0-3) unstable; urgency=medium
 
   * debian/patches:
diff -Nru 
schleuder-3.6.0/debian/patches/0031-db-change-boolean-values-to-integers.patch 
schleuder-3.6.0/debian/patches/0031-db-change-boolean-values-to-integers.patch
--- 
schleuder-3.6.0/debian/patches/0031-db-change-boolean-values-to-integers.patch  
    1970-01-01 00:00:00.000000000 +0000
+++ 
schleuder-3.6.0/debian/patches/0031-db-change-boolean-values-to-integers.patch  
    2021-12-26 16:28:29.000000000 +0000
@@ -0,0 +1,77 @@
+Description: DB: change boolean values to integers
+  Since ActiveRecord >= 6.0, the SQLite3 connection adapter relies on boolean
+  serialization to use 1 and 0, but does not natively recognize 't' and 'f' as
+  booleans were previously serialized. Accordingly, this patch handles
+  conversion via a database migration of both column defaults and stored data
+  provided by a user.
+Author: Georg Faerber <ge...@riseup.net>
+Origin: upstream
+Bug: https://0xacab.org/schleuder/schleuder/-/issues/505
+Applied-Upstream: 9ee12c4a1d6604c860c44073b99d8258bb4bc0ae
+Last-Update: 2021-12-25
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+Index: schleuder/db/migrate/20211106112020_change_boolean_values_to_integers.rb
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ schleuder/db/migrate/20211106112020_change_boolean_values_to_integers.rb   
2021-12-26 17:28:42.468530957 +0000
+@@ -0,0 +1,46 @@
++# Since ActiveRecord >= 6.0, the SQLite3 connection adapter relies on boolean
++# serialization to use 1 and 0, but does not natively recognize 't' and 'f' as
++# booleans were previously serialized.
++#
++# Accordingly, this migration handles conversion of both column defaults and
++# stored data provided by a user.
++#
++# In contrast to other migrations, only a 'forward' method is provided, a
++# mechanism to 'reverse' is not. Given the nature of this migration, the later
++# is not really required.
++#
++# Unfortunately, we missed this breaking change when bumping ActiveRecord to 
>=
++# 6.0 in Schleuder version 4.0. This caused quite some work upstream, but also
++# in downstream environments and, last but not least, at the side of users.
++#
++# We should extend our CI to explicitly test, and ensure things work as
++# expected, if running a Schleuder setup in real world. As of now, we don't
++# ensure data provided by a user in Schleuder version x still works after
++# upgrading to version y.
++
++class ChangeBooleanValuesToIntegers < ActiveRecord::Migration[6.0]
++  class Lists < ActiveRecord::Base
++  end
++
++  class Subscriptions < ActiveRecord::Base
++  end
++
++  def up
++    [Lists, Subscriptions].each do |table|
++      unless 
table.connection.is_a?(ActiveRecord::ConnectionAdapters::SQLite3Adapter)
++        return
++      end
++
++      bool_columns_defaults = table.columns.select { |column| column.type == 
:boolean }.map{ |column| [column.name, column.default] }
++
++      bool_columns_defaults.each do |column_name, column_default|
++        column_bool = 
ActiveRecord::Type::Boolean.new.deserialize(column_default)
++
++        change_column_default :"#{table.table_name}", :"#{column_name}", 
column_bool
++
++        table.where("#{column_name} = 'f'").update_all("#{column_name}": 0)
++        table.where("#{column_name} = 't'").update_all("#{column_name}": 1)
++      end
++    end
++  end
++end
+Index: schleuder/db/schema.rb
+===================================================================
+--- schleuder.orig/db/schema.rb        2021-12-26 17:28:42.472530996 +0000
++++ schleuder/db/schema.rb     2021-12-26 17:29:04.460747148 +0000
+@@ -10,7 +10,7 @@
+ #
+ # It's strongly recommended that you check this file into your version 
control system.
+ 
+-ActiveRecord::Schema.define(version: 2020_01_18_170110) do
++ActiveRecord::Schema.define(version: 2021_11_06_112020) do
+ 
+   create_table "lists", force: :cascade do |t|
+     t.datetime "created_at"
diff -Nru schleuder-3.6.0/debian/patches/series 
schleuder-3.6.0/debian/patches/series
--- schleuder-3.6.0/debian/patches/series       2021-07-29 20:36:52.000000000 
+0000
+++ schleuder-3.6.0/debian/patches/series       2021-12-26 16:28:29.000000000 
+0000
@@ -14,3 +14,4 @@
 0001-lib-fix-paths.patch
 0002-etc-fix-paths.patch
 0026-Change-way-to-block-passphrase-interaction.patch
+0031-db-change-boolean-values-to-integers.patch

Reply via email to