Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Plack-Middleware-Session for
openSUSE:Factory checked in at 2025-10-22 12:14:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Plack-Middleware-Session (Old)
and /work/SRC/openSUSE:Factory/.perl-Plack-Middleware-Session.new.18484
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Plack-Middleware-Session"
Wed Oct 22 12:14:18 2025 rev:7 rq:1312563 version:0.360.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Plack-Middleware-Session/perl-Plack-Middleware-Session.changes
2025-07-21 20:01:59.167295031 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Plack-Middleware-Session.new.18484/perl-Plack-Middleware-Session.changes
2025-10-22 12:17:58.747754296 +0200
@@ -1,0 +2,10 @@
+Tue Oct 14 12:21:49 UTC 2025 - Tina Müller <[email protected]>
+
+- updated to 0.360.0 (0.36)
+ see /usr/share/doc/packages/perl-Plack-Middleware-Session/Changes
+
+ 0.36 2025-07-23 15:01:17 EDT
+ - DBI Store improvements: Allow specification of id and data columns,
+ support for extending modules to set DB data columns, fix quoting
issues (#48)
+
+-------------------------------------------------------------------
Old:
----
Plack-Middleware-Session-0.35.tar.gz
New:
----
Plack-Middleware-Session-0.36.tar.gz
README.md
_scmsync.obsinfo
build.specials.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Plack-Middleware-Session.spec ++++++
--- /var/tmp/diff_new_pack.3vPKSj/_old 2025-10-22 12:17:59.819799454 +0200
+++ /var/tmp/diff_new_pack.3vPKSj/_new 2025-10-22 12:17:59.823799622 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Plack-Middleware-Session
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,16 @@
%define cpan_name Plack-Middleware-Session
Name: perl-Plack-Middleware-Session
-Version: 0.350.0
+Version: 0.360.0
Release: 0
-# 0.35 -> normalize -> 0.350.0
-%define cpan_version 0.35
+# 0.36 -> normalize -> 0.360.0
+%define cpan_version 0.36
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Middleware for session management
URL: https://metacpan.org/release/%{cpan_name}
Source0:
https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/%{cpan_name}-%{cpan_version}.tar.gz
Source1: cpanspec.yml
+Source100: README.md
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
++++++ Plack-Middleware-Session-0.35.tar.gz ->
Plack-Middleware-Session-0.36.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/Build.PL
new/Plack-Middleware-Session-0.36/Build.PL
--- old/Plack-Middleware-Session-0.35/Build.PL 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/Build.PL 2025-07-23 21:01:19.000000000
+0200
@@ -1,7 +1,9 @@
-# This Build.PL for Plack-Middleware-Session was generated by
Dist::Zilla::Plugin::ModuleBuildTiny 0.015.
+# This Build.PL for Plack-Middleware-Session was generated by
Dist::Zilla::Plugin::ModuleBuildTiny 0.020.
use strict;
use warnings;
+
use 5.006;
use Module::Build::Tiny 0.034;
Build_PL();
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/Changes
new/Plack-Middleware-Session-0.36/Changes
--- old/Plack-Middleware-Session-0.35/Changes 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/Changes 2025-07-23 21:01:19.000000000
+0200
@@ -1,5 +1,9 @@
Revision history for Perl extension Plack::Middleware::Session
+0.36 2025-07-23 15:01:17 EDT
+ - DBI Store improvements: Allow specification of id and data columns,
+ support for extending modules to set DB data columns, fix quoting
issues (#48)
+
0.35 2025-07-07 18:49:59 EDT
- Added secure session ID generation using Crypt::SysRandom (#52)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/LICENSE
new/Plack-Middleware-Session-0.36/LICENSE
--- old/Plack-Middleware-Session-0.35/LICENSE 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/LICENSE 2025-07-23 21:01:19.000000000
+0200
@@ -22,7 +22,7 @@
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -236,8 +236,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301
USA
+ along with this program; if not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
@@ -264,116 +263,149 @@
program `Gnomovision' (a program to direct compilers to make passes
at assemblers) written by James Hacker.
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
+ <signature of Moe Ghoul>, 1 April 1989
+ Moe Ghoul, President of Vice
That's all there is to it!
---- The Artistic License 1.0 ---
+--- The Perl Artistic License 1.0 ---
This software is Copyright (c) 2009 by Tatsuhiko Miyagawa.
This is free software, licensed under:
- The Artistic License 1.0
+ The Perl Artistic License 1.0
-The Artistic License
-Preamble
-The intent of this document is to state the conditions under which a Package
-may be copied, such that the Copyright Holder maintains some semblance of
-artistic control over the development of the package, while giving the users of
-the package the right to use and distribute the Package in a more-or-less
-customary fashion, plus the right to make reasonable modifications.
+
+
+ The "Artistic License"
+
+ Preamble
+
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some
+semblance of artistic control over the development of the package,
+while giving the users of the package the right to use and distribute
+the Package in a more-or-less customary fashion, plus the right to make
+reasonable modifications.
Definitions:
- - "Package" refers to the collection of files distributed by the Copyright
- Holder, and derivatives of that collection of files created through
- textual modification.
- - "Standard Version" refers to such a Package if it has not been modified,
- or has been modified in accordance with the wishes of the Copyright
- Holder.
- - "Copyright Holder" is whoever is named in the copyright or copyrights for
- the package.
- - "You" is you, if you're thinking about copying or distributing this
Package.
- - "Reasonable copying fee" is whatever you can justify on the basis of media
- cost, duplication charges, time of people involved, and so on. (You will
- not be required to justify it to the Copyright Holder, but only to the
- computing community at large as a market that must bear the fee.)
- - "Freely Available" means that no fee is charged for the item itself, though
- there may be fees involved in handling the item. It also means that
- recipients of the item may redistribute it under the same conditions they
- received it.
+ "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
-2. You may apply bug fixes, portability fixes and other modifications derived
-from the Public Domain or from the Copyright Holder. A Package modified in such
-a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided that
-you insert a prominent notice in each changed file stating how and when you
-changed that file, and provided that you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or an
- equivalent medium, or placing the modifications on a major archive site
- such as ftp.uu.net, or by allowing the Copyright Holder to include your
- modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict with
- standard executables, which must also be provided, and provide a separate
- manual page for each non-standard executable that clearly documents how it
- differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or executable
-form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where to
- get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of the Package
- with your modifications.
-
- c) accompany any non-standard executables with their corresponding Standard
- Version executables, giving the non-standard executables non-standard
- names, and clearly documenting the differences in manual pages (or
- equivalent), together with instructions on where to get the Standard
- Version.
+2. You may apply bug fixes, portability fixes and other modifications
+derived from the Public Domain or from the Copyright Holder. A Package
+modified in such a way shall still be considered the Standard Version.
- d) make other distribution arrangements with the Copyright Holder.
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and
+when you changed that file, and provided that you do at least ONE of the
+following:
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this Package. You
-may not charge a fee for this Package itself. However, you may distribute this
-Package in aggregate with other (possibly commercial) programs as part of a
-larger (possibly commercial) software distribution provided that you do not
-advertise this Package as a product of your own.
-
-6. The scripts and library files supplied as input to or produced as output
-from the programs of this Package do not automatically fall under the copyright
-of this Package, but belong to whomever generated them, and may be sold
-commercially, and may be aggregated with this Package.
+ a) place your modifications in the Public Domain or otherwise make them
+ Freely Available, such as by posting said modifications to Usenet or
+ an equivalent medium, or placing the modifications on a major archive
+ site such as uunet.uu.net, or by allowing the Copyright Holder to include
+ your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict
+ with standard executables, which must also be provided, and provide
+ a separate manual page for each non-standard executable that clearly
+ documents how it differs from the Standard Version.
-7. C or perl subroutines supplied by you and linked into this Package shall not
-be considered part of this Package.
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or
+executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files,
+ together with instructions (in the manual page or equivalent) on where
+ to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of
+ the Package with your modifications.
+
+ c) give non-standard executables non-standard names, and clearly
+ document the differences in manual pages (or equivalent), together
+ with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package. You may charge any fee you choose for support of this
+Package. You may not charge a fee for this Package itself. However,
+you may distribute this Package in aggregate with other (possibly
+commercial) programs as part of a larger (possibly commercial) software
+distribution provided that you do not advertise this Package as a
+product of your own. You may embed this Package's interpreter within
+an executable of yours (by linking); this shall be construed as a mere
+form of aggregation, provided that the complete Standard Version of the
+interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as
+output from the programs of this Package do not automatically fall
+under the copyright of this Package, but belong to whoever generated
+them, and may be sold commercially, and may be aggregated with this
+Package. If such scripts or library files are aggregated with this
+Package via the so-called "undump" or "unexec" methods of producing a
+binary executable image, then distribution of such an image shall
+neither be construed as a distribution of this Package nor shall it
+fall under the restrictions of Paragraphs 3 and 4, provided that you do
+not represent such an executable image as a Standard Version of this
+Package.
+
+7. C subroutines (or comparably compiled subroutines in other
+languages) supplied by you and linked into this Package in order to
+emulate subroutines and variables of the language defined by this
+Package shall not be considered part of this Package, but are the
+equivalent of input as in Paragraph 6, provided these subroutines do
+not change the language in any way that would cause it to fail the
+regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always
+permitted provided that the use of this Package is embedded; that is,
+when no overt attempt is made to make this Package's interfaces visible
+to the end user of the commercial distribution. Such use shall not be
+construed as a distribution of this Package.
-8. The name of the Copyright Holder may not be used to endorse or promote
+9. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.
-9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-The End
+ The End
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/MANIFEST
new/Plack-Middleware-Session-0.36/MANIFEST
--- old/Plack-Middleware-Session-0.35/MANIFEST 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/MANIFEST 2025-07-23 21:01:19.000000000
+0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest
v6.025.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest
v6.033.
Build.PL
Changes
LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/META.json
new/Plack-Middleware-Session-0.36/META.json
--- old/Plack-Middleware-Session-0.35/META.json 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/META.json 2025-07-23 21:01:19.000000000
+0200
@@ -4,7 +4,7 @@
"Tatsuhiko Miyagawa"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Milla version v1.0.22, Dist::Zilla version 6.025,
CPAN::Meta::Converter version 2.150010",
+ "generated_by" : "Dist::Milla version v1.0.22, Dist::Zilla version 6.033,
CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
@@ -69,7 +69,7 @@
"web" : "https://github.com/plack/Plack-Middleware-Session"
}
},
- "version" : "0.35",
+ "version" : "0.36",
"x_contributors" : [
"Alexander Kuehne <[email protected]>",
"Alex Vandiver <[email protected]>",
@@ -82,11 +82,13 @@
"Ivan Baidakou <[email protected]>",
"James E Keenan <[email protected]>",
"John Lifsey <[email protected]>",
+ "Josh Ballard <[email protected]>",
"Lee Aylward <[email protected]>",
"lestrrat <[email protected]>",
"Mark Stosberg <[email protected]>",
"Masahiro Chiba <[email protected]>",
"Masahiro Nagano <[email protected]>",
+ "Mitch McCracken <[email protected]>",
"Mohammad S Anwar <[email protected]>",
"Olaf Alders <[email protected]>",
"rawleyfowler <[email protected]>",
@@ -99,8 +101,8 @@
"Tokuhiro Matsuno <[email protected]>",
"vividsnow <[email protected]>"
],
- "x_generated_by_perl" : "v5.34.1",
- "x_serialization_backend" : "Cpanel::JSON::XS version 4.27",
+ "x_generated_by_perl" : "v5.36.1",
+ "x_serialization_backend" : "Cpanel::JSON::XS version 4.37",
"x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later",
"x_static_install" : 1
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/META.yml
new/Plack-Middleware-Session-0.36/META.yml
--- old/Plack-Middleware-Session-0.35/META.yml 2025-07-08 00:50:00.000000000
+0200
+++ new/Plack-Middleware-Session-0.36/META.yml 2025-07-23 21:01:19.000000000
+0200
@@ -12,7 +12,7 @@
configure_requires:
Module::Build::Tiny: '0.034'
dynamic_config: 0
-generated_by: 'Dist::Milla version v1.0.22, Dist::Zilla version 6.025,
CPAN::Meta::Converter version 2.150010'
+generated_by: 'Dist::Milla version v1.0.22, Dist::Zilla version 6.033,
CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -37,7 +37,7 @@
bugtracker: https://github.com/plack/Plack-Middleware-Session/issues
homepage: https://github.com/plack/Plack-Middleware-Session
repository: https://github.com/plack/Plack-Middleware-Session.git
-version: '0.35'
+version: '0.36'
x_contributors:
- 'Alexander Kuehne <[email protected]>'
- 'Alex Vandiver <[email protected]>'
@@ -50,11 +50,13 @@
- 'Ivan Baidakou <[email protected]>'
- 'James E Keenan <[email protected]>'
- 'John Lifsey <[email protected]>'
+ - 'Josh Ballard <[email protected]>'
- 'Lee Aylward <[email protected]>'
- 'lestrrat <[email protected]>'
- 'Mark Stosberg <[email protected]>'
- 'Masahiro Chiba <[email protected]>'
- 'Masahiro Nagano <[email protected]>'
+ - 'Mitch McCracken <[email protected]>'
- 'Mohammad S Anwar <[email protected]>'
- 'Olaf Alders <[email protected]>'
- 'rawleyfowler <[email protected]>'
@@ -66,7 +68,7 @@
- 'Tatsuhiko Miyagawa <[email protected]>'
- 'Tokuhiro Matsuno <[email protected]>'
- 'vividsnow <[email protected]>'
-x_generated_by_perl: v5.34.1
-x_serialization_backend: 'YAML::Tiny version 1.73'
+x_generated_by_perl: v5.36.1
+x_serialization_backend: 'YAML::Tiny version 1.76'
x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later'
x_static_install: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Middleware/Session.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Middleware/Session.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Middleware/Session.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Middleware/Session.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Plack::Util;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Cleanup.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Cleanup.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Cleanup.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Cleanup.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
sub new {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/State/Cookie.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/State/Cookie.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/State/Cookie.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/State/Cookie.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use parent 'Plack::Session::State';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/State.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/State.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/State.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/State.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Crypt::SysRandom ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/Cache.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/Cache.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/Cache.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/Cache.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Scalar::Util qw[ blessed ];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/DBI.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/DBI.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/DBI.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/DBI.pm
2025-07-23 21:01:19.000000000 +0200
@@ -4,7 +4,7 @@
# XXX Is there a notion of auto-expiry?
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use MIME::Base64 ();
@@ -12,7 +12,7 @@
use parent 'Plack::Session::Store';
-use Plack::Util::Accessor qw[ dbh get_dbh table_name serializer deserializer ];
+use Plack::Util::Accessor qw[ dbh get_dbh table_name serializer deserializer
id_column data_column];
sub new {
my ($class, %params) = @_;
@@ -22,6 +22,8 @@
}
$params{table_name} ||= 'sessions';
+ $params{data_column} ||= 'session_data';
+ $params{id_column} ||= 'id';
$params{serializer} ||=
sub { MIME::Base64::encode_base64( Storable::nfreeze( $_[0] ) ) };
$params{deserializer} ||=
@@ -39,8 +41,17 @@
sub fetch {
my ($self, $session_id) = @_;
my $table_name = $self->{table_name};
+ my $data_column = $self->{data_column};
+ my $id_column = $self->{id_column};
my $dbh = $self->_dbh;
- my $sth = $dbh->prepare_cached("SELECT session_data FROM $table_name WHERE
id = ?");
+ my $sth = $dbh->prepare_cached(
+ sprintf(
+ "SELECT %s FROM %s WHERE %s = ?",
+ $dbh->quote_identifier($data_column),
+ $self->_quote_table_name($table_name),
+ $dbh->quote_identifier($id_column),
+ )
+ );
$sth->execute( $session_id );
my ($data) = $sth->fetchrow_array();
$sth->finish;
@@ -50,11 +61,21 @@
sub store {
my ($self, $session_id, $session) = @_;
my $table_name = $self->{table_name};
+ my $data_column = $self->{data_column};
+ my $id_column = $self->{id_column};
+
+ my $dbh = $self->_dbh;
# XXX To be honest, I feel like there should be a transaction
# call here.... but Catalyst didn't have it, so I'm not so sure
- my $sth = $self->_dbh->prepare_cached("SELECT 1 FROM $table_name WHERE id
= ?");
+ my $sth = $dbh->prepare_cached(
+ sprintf(
+ "SELECT 1 FROM %s WHERE %s = ?",
+ $self->_quote_table_name($table_name),
+ $dbh->quote_identifier($id_column),
+ )
+ );
$sth->execute($session_id);
# need to fetch. on some DBD's execute()'s return status and
@@ -62,26 +83,62 @@
my ($exists) = $sth->fetchrow_array();
$sth->finish;
+
+ my %column_data = (
+ $self->additional_column_data($session),
+
+ $data_column => $self->serializer->($session),
+ $id_column => $session_id,
+ );
+ my @columns = sort keys %column_data;
if ($exists) {
- my $sth = $self->_dbh->prepare_cached("UPDATE $table_name SET
session_data = ? WHERE id = ?");
- $sth->execute( $self->serializer->($session), $session_id );
+ my $sth = $dbh->prepare_cached(
+ sprintf(
+ "UPDATE %s SET %s WHERE %s = ?",
+ $self->_quote_table_name($table_name),
+ join(',', map { $dbh->quote_identifier($_).' = ?' } @columns),
+ $dbh->quote_identifier($id_column),
+ )
+ );
+ $sth->execute( @column_data{@columns}, $session_id );
}
else {
- my $sth = $self->_dbh->prepare_cached("INSERT INTO $table_name (id,
session_data) VALUES (?, ?)");
- $sth->execute( $session_id , $self->serializer->($session) );
+ my $sth = $dbh->prepare_cached(
+ sprintf(
+ "INSERT INTO %s (%s) VALUES (%s)",
+ $self->_quote_table_name($table_name),
+ join(',', map { $dbh->quote_identifier($_) } @columns),
+ join(',', map { '?' } @columns),
+ )
+ );
+ $sth->execute( @column_data{@columns});
}
-
}
+sub additional_column_data { }
+
sub remove {
my ($self, $session_id) = @_;
my $table_name = $self->{table_name};
- my $sth = $self->_dbh->prepare_cached("DELETE FROM $table_name WHERE id =
?");
+ my $id_column = $self->{id_column};
+ my $sth = $self->_dbh->prepare_cached(
+ sprintf(
+ "DELETE FROM %s WHERE %s = ?",
+ $self->_quote_table_name($table_name),
+ $self->_dbh->quote_identifier($id_column),
+ )
+ );
$sth->execute( $session_id );
$sth->finish;
}
+sub _quote_table_name {
+ my ($self, $table_name) = @_;
+ my @parts = split /\./, $table_name;
+ return join '.', map { $self->_dbh->quote_identifier( $_ ) } @parts;
+}
+
1;
__END__
@@ -132,13 +189,15 @@
};
- # use custom session table name
+ # use custom session table name, session ID or data columns
builder {
enable 'Session',
store => Plack::Session::Store::DBI->new(
- dbh => DBI->connect( @connect_args ),
- table_name => 'my_session_table',
+ dbh => DBI->connect( @connect_args ),
+ table_name => 'my_session_table',
+ id_column => 'session_id',
+ data_column => 'data',
);
$app;
};
@@ -165,6 +224,22 @@
will exceed that size you'll want to move to MEDIUMTEXT, MEDIUMBLOB,
or larger.
+You can opt to specify alternative table names (using table_name), as well as
+alternative columns to use for session ID (id_column) and session data storage
+(data_column), especially useful if you're converting from an existing session
+mechanism.
+
+=head1 EXTENDING
+
+Plack::Session::Store::DBI has built in functionality to allow for inheriting
+modules to set additional columns on each session row.
+
+By overriding the additional_column_data function, you can return a hash of
+columns and values to set. The session data hashref will be passed to the
+overridden additional_column_data function as its only argument, so that you
+can use session data values as appropriate for any additional column data you
+would like to set.
+
=head1 AUTHORS
Many aspects of this module were partially based upon
L<Catalyst::Plugin::Session::Store::DBI>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/File.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/File.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/File.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/File.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Storable ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/Null.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/Null.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store/Null.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store/Null.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
sub new { bless {} => shift }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session/Store.pm
2025-07-08 00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session/Store.pm
2025-07-23 21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Plack::Util::Accessor qw[ _stash ];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Plack-Middleware-Session-0.35/lib/Plack/Session.pm
new/Plack-Middleware-Session-0.36/lib/Plack/Session.pm
--- old/Plack-Middleware-Session-0.35/lib/Plack/Session.pm 2025-07-08
00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/lib/Plack/Session.pm 2025-07-23
21:01:19.000000000 +0200
@@ -2,7 +2,7 @@
use strict;
use warnings;
-our $VERSION = '0.35';
+our $VERSION = '0.36';
our $AUTHORITY = 'cpan:STEVAN';
use Plack::Util::Accessor qw( session options );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Plack-Middleware-Session-0.35/t/006_basic_w_dbi_store.t
new/Plack-Middleware-Session-0.36/t/006_basic_w_dbi_store.t
--- old/Plack-Middleware-Session-0.35/t/006_basic_w_dbi_store.t 2025-07-08
00:50:00.000000000 +0200
+++ new/Plack-Middleware-Session-0.36/t/006_basic_w_dbi_store.t 2025-07-23
21:01:19.000000000 +0200
@@ -26,6 +26,16 @@
);
EOSQL
+# Building the table with these weird names will simultaneously prove that we
+# accept custom table and column names while also demonstrating that we do
+# quoting correctly, which the previous code did not.
+$dbh->do(<<EOSQL);
+CREATE TABLE 'insert' (
+ 'where' CHAR(72) PRIMARY KEY,
+ 'set' TEXT
+);
+EOSQL
+
TestSession::run_all_tests(
store => Plack::Session::Store::DBI->new( dbh => $dbh ),
state => Plack::Session::State->new,
@@ -44,6 +54,28 @@
);
TestSession::run_all_tests(
+ store => Plack::Session::Store::DBI->new(
+ dbh => $dbh,
+ table_name => 'insert',
+ id_column => 'where',
+ data_column => 'set',
+ ),
+ state => Plack::Session::State->new,
+ env_cb => sub {
+ open my $in, '<', \do { my $d };
+ my $env = {
+ 'psgi.version' => [ 1, 0 ],
+ 'psgi.input' => $in,
+ 'psgi.errors' => *STDERR,
+ 'psgi.url_scheme' => 'http',
+ SERVER_PORT => 80,
+ REQUEST_METHOD => 'GET',
+ QUERY_STRING => join "&" => map { $_ . "=" . $_[0]->{ $_ } }
keys %{$_[0] || +{}},
+ };
+ },
+);
+
+TestSession::run_all_tests(
store => Plack::Session::Store::DBI->new( get_dbh => sub { $dbh } ),
state => Plack::Session::State->new,
env_cb => sub {
@@ -63,4 +95,8 @@
$dbh->disconnect;
+my $store = Plack::Session::Store::DBI->new( dbh => $dbh );
+is $store->_quote_table_name('mysession'), '"mysession"';
+is $store->_quote_table_name('otherdb.mysession'), '"otherdb"."mysession"';
+
done_testing;
++++++ README.md ++++++
## Build Results
Current state of perl in openSUSE:Factory is

The current state of perl in the devel project build (devel:languages:perl)

++++++ _scmsync.obsinfo ++++++
mtime: 1760444510
commit: d20d670076753ac51a1ef219000415903c31f803965ac144e9f7b0cd3b703cfe
url: https://src.opensuse.org/perl/perl-Plack-Middleware-Session.git
revision: d20d670076753ac51a1ef219000415903c31f803965ac144e9f7b0cd3b703cfe
projectscmsync: https://src.opensuse.org/perl/_ObsPrj
++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore 2025-10-14 16:19:24.000000000 +0200
@@ -0,0 +1 @@
+.osc