Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package innotop for openSUSE:Factory checked 
in at 2021-05-17 18:45:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/innotop (Old)
 and      /work/SRC/openSUSE:Factory/.innotop.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "innotop"

Mon May 17 18:45:23 2021 rev:6 rq:893695 version:1.13.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/innotop/innotop.changes  2017-04-11 
09:33:40.866400635 +0200
+++ /work/SRC/openSUSE:Factory/.innotop.new.2988/innotop.changes        
2021-05-17 18:45:54.296473355 +0200
@@ -1,0 +2,11 @@
+Sat May 15 12:16:52 UTC 2021 - Andreas Stieger <[email protected]>
+
+- innotop 1.13.0:
+  * UI tweaks
+  * Fix Perl strict error
+  * Fix version detection for MariaDB
+  * Add fix for Maria-verion and MySQL 8
+  * Support MySQL 8.0 MariaDB 10.3
+  * Add options for SSL usage
+
+-------------------------------------------------------------------

Old:
----
  innotop-1.11.4.tar.gz

New:
----
  innotop-1.13.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ innotop.spec ++++++
--- /var/tmp/diff_new_pack.AKJATI/_old  2021-05-17 18:45:54.688471692 +0200
+++ /var/tmp/diff_new_pack.AKJATI/_new  2021-05-17 18:45:54.688471692 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package innotop
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,17 +12,17 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           innotop
-Version:        1.11.4
+Version:        1.13.0
 Release:        0
 Summary:        A MySQL and InnoDB monitor program
-License:        GPL-2.0
+License:        GPL-2.0-only
 Group:          Productivity/Databases/Tools
-Url:            https://github.com/innotop/innotop/
+URL:            https://github.com/innotop/innotop/
 Source0:        
https://github.com/innotop/innotop/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
 BuildRequires:  perl(DBD::mysql)
 BuildRequires:  perl(DBI)
@@ -44,7 +44,6 @@
 Requires:       perl(List::Util)
 Requires:       perl(Term::ReadKey)
 Requires:       perl(Time::HiRes)
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 %if 0%{?suse_version} < 1140
 Requires:       perl = %{perl_version}
@@ -63,7 +62,7 @@
 
 %build
 perl Makefile.PL INSTALLDIRS=vendor
-make %{?_smp_mflags}
+%make_build
 
 %install
 make pure_install PERL_INSTALL_ROOT=%{buildroot}
@@ -72,12 +71,12 @@
 chmod -R u+w %{buildroot}/*
 
 %check
-make %{?_smp_mflags} test
+%make_build test
 
 %files
-%defattr(-,root,root,-)
-%doc COPYING Changelog
+%license COPYING LICENSE
+%doc Changelog
 %{_bindir}/innotop
-%{_mandir}/man1/innotop.1*
+%{_mandir}/man1/innotop.1%{?ext_man}
 
 %changelog

++++++ innotop-1.11.4.tar.gz -> innotop-1.13.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/.travis.yml 
new/innotop-1.13.0/.travis.yml
--- old/innotop-1.11.4/.travis.yml      1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/.travis.yml      2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,7 @@
+language: perl
+perl:
+  - "5.22"
+  - "5.20"
+  - "5.18"
+  - "5.16"
+  - "5.14"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/Changelog new/innotop-1.13.0/Changelog
--- old/innotop-1.11.4/Changelog        2017-01-20 23:42:40.000000000 +0100
+++ new/innotop-1.13.0/Changelog        2021-04-07 17:48:24.000000000 +0200
@@ -1,5 +1,12 @@
 Changelog for innotop:
 
+2021-04-07: version 1.13.0
+       * Add SSL support
+
+2018-11-08: version 1.12.0
+       * Fix some bugs
+       * Add support for MySQL 8.0
+
 2017-01-20: version 1.11.4
        * add SUM function for ONLY_FULL_GROUP_BY
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/LICENSE new/innotop-1.13.0/LICENSE
--- old/innotop-1.11.4/LICENSE  1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/LICENSE  2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,309 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    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.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/README.md new/innotop-1.13.0/README.md
--- old/innotop-1.11.4/README.md        2017-01-20 23:42:40.000000000 +0100
+++ new/innotop-1.13.0/README.md        2021-04-07 17:48:24.000000000 +0200
@@ -1,4 +1,7 @@
 [![Stories in 
Ready](https://badge.waffle.io/innotop/innotop.png?label=ready&title=Ready)](https://waffle.io/innotop/innotop)
+
+![innotop_logo2](https://user-images.githubusercontent.com/609675/48270427-5760d500-e43a-11e8-847b-240c27a957e0.png)
+
 innotop
 =======
 
@@ -10,7 +13,6 @@
 * monitors many servers at once and can aggregate across them 
 
 The manual is embedded into the program in Perl's POD format, so it should be 
available 
-through perldoc and man, and is still available online on the previous hosting 
(the project moved from
-google code to git): http://innotop.googlecode.com/svn/html/index.html
+through perldoc and man.
 
 The full history has been imported in github.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/changelog 
new/innotop-1.13.0/debian/changelog
--- old/innotop-1.11.4/debian/changelog 1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/changelog 2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,44 @@
+innotop (1.11.4-1) stable; urgency=low
+
+  * Package for github new tag 1.11.4
+
+ -- Frederic Descamps <[email protected]>  Fri, 20 Jan 2017 22:21:03 +0000
+
+innotop (1.9.1-1) stable; urgency=low
+
+  * Package for svn source code revision 113 
+
+ -- Frederic Descamps <[email protected]>  Fri, 12 Jul 2013 22:21:03 +0000
+
+innotop (1.9.0-3) stable; urgency=low
+
+  * Add MySQL 5.6 support (patch 
https://code.google.com/p/innotop/issues/detail?id=83)
+  * Add extra build requirement packages
+
+ -- Frederic Descamps <[email protected]>  Thu, 11 Jul 2013 22:21:03 +0000
+
+innotop (1.9.0-2) stable; urgency=low
+
+  * fix perl-TermReadKey requirement - typo
+
+ -- Frederic Descamps <[email protected]>  Fri, 14 Sep 2012 22:21:03 +0000
+
+innotop (between 1.9.0-2 and after 1.0) stable; urgency=low
+
+  * add build requirements
+
+ -- Frederic Descamps <[email protected]>  Fri, 7 Sep 2012 22:21:03 +0000
+
+innotop (1.0-1) stable; urgency=low
+
+  * Updated the spec file to reflect the changes in 1.0, fixed the URLs
+  * removed the reference to innotop.html, added INSTALL to the docs instead 
+
+ -- Lenz Grimmer <[email protected]>  Mon, 8 Jan 2007 22:21:03 +0000
+
+innotop (0.1.160-1) stable; urgency=low
+
+  * Initial spec file for version 0.1.160
+
+ -- Lenz Grimmer <[email protected]>  Thu, 16 Nov 2006 22:21:03 +0000
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/compat 
new/innotop-1.13.0/debian/compat
--- old/innotop-1.11.4/debian/compat    1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/compat    2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1 @@
+9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/control 
new/innotop-1.13.0/debian/control
--- old/innotop-1.11.4/debian/control   1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/control   2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,23 @@
+Source: innotop
+Section: database
+Priority: optional
+Maintainer: Emily Slocombe <[email protected]>
+Build-Depends: debhelper (>= 8.0.0)
+Standards-Version: 3.9.4
+Homepage: https://github.com/innotop/innotop
+
+Package: innotop
+Architecture: any
+Depends:
+ libdbd-mysql-perl (>= 1.2202),
+ libdbi-perl,
+ libterm-readkey-perl,
+ ${perl:Depends}, 
+ ${shlibs:Depends}, 
+ ${misc:Depends}
+Description: Innotop
+ MySQL and InnoDB transaction/status monitor.  Like 'top' for MySQL.  Displays
+ queries, InnoDB transactions, lock waits, deadlocks, foreign key errors, open
+ tables, replication status, buffer information, row operations, logs, I/O
+ operations, load graph, and more.  You can monitor many servers at once with
+ innotop.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/copyright 
new/innotop-1.13.0/debian/copyright
--- old/innotop-1.11.4/debian/copyright 1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/copyright 2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,34 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: innotop
+Source: <https://github.com/innotop/innotop>
+
+Files: *
+Copyright: 200?-2017 many authors
+License: GPL-2.0-only or Artistic-1.0-Perl
+
+Files: debian/*
+Copyright: 2017 unknown <[email protected]>
+License: GPL-2.0+
+
+License: GPL-2.0-only or Artistic-1.0-Perl
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation, version 2; OR the Perl Artistic License.  On UNIX and similar
+ systems, you can issue `man perlgpl' or `man perlartistic' to read these
+ licenses.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ 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, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
+# Please avoid to pick license terms that are more restrictive than the
+# packaged work, as it may make Debian's contributions unacceptable upstream.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/docs 
new/innotop-1.13.0/debian/docs
--- old/innotop-1.11.4/debian/docs      1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/docs      2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1 @@
+README.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/files 
new/innotop-1.13.0/debian/files
--- old/innotop-1.11.4/debian/files     1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/files     2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1 @@
+innotop_1.11.4-1_amd64.deb database optional
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/debian/rules 
new/innotop-1.13.0/debian/rules
--- old/innotop-1.11.4/debian/rules     1970-01-01 01:00:00.000000000 +0100
+++ new/innotop-1.13.0/debian/rules     2021-04-07 17:48:24.000000000 +0200
@@ -0,0 +1,8 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+%:
+       dh $@ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/innotop new/innotop-1.13.0/innotop
--- old/innotop-1.11.4/innotop  2017-01-20 23:42:40.000000000 +0100
+++ new/innotop-1.13.0/innotop  2021-04-07 17:48:24.000000000 +0200
@@ -22,7 +22,7 @@
 use strict;
 use warnings FATAL => 'all';
 
-our $VERSION = '1.11.4';
+our $VERSION = '1.13.0';
 
 # Find the home directory; it's different on different OSes.
 our $homepath = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
@@ -471,7 +471,7 @@
    # too many locks to print, the output might be truncated)
 
    my $time_text;
-   if ( ($mysqlversion =~ /^5\.[67]\./) || ($mysqlversion =~ /^10\.[012]\./) ) 
{
+   if ( ($mysqlversion =~ /^5\.[67]\./) || ($mysqlversion =~ /^8\.0\./) || 
($mysqlversion =~ /^10\.[0123]\./) ) {
       ( $time_text ) = $fulltext =~ m/^([0-9-]* [0-9:]*) [0-9a-fx]* INNODB 
MONITOR OUTPUT/m;
       $innodb_data{'ts'} = [ parse_innodb_timestamp_56( $time_text ) ];
    } else {
@@ -639,7 +639,7 @@
    return 0 unless $fulltext;
 
    my ( $ts, $type );
-   if ( ($mysqlversion =~ /^5.[67]\./) || ($mysqlversion =~ /^10.[012]\./) ) {
+   if ( ($mysqlversion =~ /^5.[67]\./) || ($mysqlversion =~ /^10.[0123]\./) ) {
       ( $ts, $type ) = $fulltext =~ m/^([0-9-]* [0-9:]*)\s[0-9a-fx]*\s+(\w+)/m;
       $section->{'ts'} = [ parse_innodb_timestamp_56( $ts ) ];
    } else {
@@ -899,7 +899,7 @@
    my ( $ts ) = $fulltext =~ m/^$s$/m;
    return 0 unless $ts;
 
-   if ( ($mysqlversion =~ /^5\.[67]\./) || ($mysqlversion =~ /^10\.[012]\./) ) 
{
+   if ( ($mysqlversion =~ /^5\.[67]\./) || ($mysqlversion =~ /^8\.0\./) || 
($mysqlversion =~ /^10\.[0123]\./) ) {
       $dl->{'ts'} = [ parse_innodb_timestamp_56( $ts ) ];
    }
    else {
@@ -1177,6 +1177,12 @@
       = $fulltext =~ m#^$f inserts/s, $f updates/s, $f deletes/s, $f 
reads/s$#m;
    $section->{'main_thread_proc_no'} ||= 0;
 
+   if (!(@{$section}{main_thread_proc_no}) && !(@{$section}{main_thread_id}) 
&& !(@{$section}{main_thread_state}))
+   {
+     ### MySQL 8.0 style.
+     @{$section}{ 'main_thread_proc_no', 'main_thread_id', 'main_thread_state' 
}
+        = $fulltext =~ m/^Process ID=$d, Main thread 
ID=$d\s*,\s+state=\s?(.*)$/m;
+   }
    map { $section->{$_} ||= 0 } qw(read_views_open n_reserved_extents);
    delete $section->{'fulltext'} unless $debug;
    return 1;
@@ -1224,6 +1230,7 @@
       @{$section}{ 'merged_recs', 'merges' } = (0, 0);
    }
 
+   ### TODO: how to behave when innodb_adaptive_hash_index_parts > 1?
    @{$section}{ 'hash_table_size', 'used_cells', 'bufs_in_node_heap' }
       = $fulltext =~ m/^Hash table size $d(?:, used cells $d)?, node heap has 
$d buffer\(s\)$/m;
    @{$section}{ 'hash_searches_s', 'non_hash_searches_s' }
@@ -1287,6 +1294,7 @@
    @{$section}{ 'rw_shared_spins', 'rw_shared_os_waits', 'rw_excl_spins', 
'rw_excl_os_waits' }
       = $fulltext =~ m/^RW-shared spins $d, OS waits $d; RW-excl spins $d, OS 
waits $d$/m;
    if ( ! defined $section->{rw_shared_spins} ) {
+      ### TODO: RW-sx
       @{$section}{ 'rw_shared_spins', 'rw_shared_os_waits'}
          = $fulltext =~ m/^RW-shared spins $d, rounds \d+, OS waits $d$/m;
       @{$section}{ 'rw_excl_spins', 'rw_excl_os_waits' }
@@ -1309,8 +1317,10 @@
    my $fulltext = $section->{'fulltext'};
 
    # Grab the info
-   @{$section}{ 'total_mem_alloc', 'add_pool_alloc' }
-      = $fulltext =~ m/^Total memory allocated $d; in additional pool 
allocated $d$/m;
+   @{$section}{ 'total_mem_alloc' }
+      = $fulltext =~ m/^Total (?:large )?memory allocated $d/m;
+   @{$section}{ 'add_pool_alloc' }
+      = $fulltext =~ m/in additional pool allocated $d$/m;
    @{$section}{'dict_mem_alloc'}     = $fulltext =~ m/Dictionary memory 
allocated $d/;
    @{$section}{'awe_mem_alloc'}      = $fulltext =~ m/$d MB of AWE memory/;
    @{$section}{'buf_pool_size'}      = $fulltext =~ m/^Buffer pool 
size\s*$d$/m;
@@ -1331,7 +1341,7 @@
       @{$section}{'buf_pool_hit_rate'}
          = $fulltext =~ m{Buffer pool hit rate (\d+ / \d+)}m;
    }
-   @{$section}{'reads_pending'} = $fulltext =~ m/^Pending reads $d/m;
+   @{$section}{'reads_pending'} = $fulltext =~ m/^Pending reads\s+$d/m;
    @{$section}{'writes_pending_lru', 'writes_pending_flush_list', 
'writes_pending_single_page' }
       = $fulltext =~ m/^Pending writes: LRU $d, flush list $d, single page 
$d$/m;
 
@@ -1371,7 +1381,7 @@
    @{$section}{ 'pending_normal_aio_reads', 'pending_aio_writes' }
       = $fulltext =~ m/^Pending normal aio reads: $d(?: [^\]]*\])?, aio 
writes: $d/m;
    @{$section}{ 'pending_ibuf_aio_reads', 'pending_log_ios', 
'pending_sync_ios' }
-      = $fulltext =~ m{^ ibuf aio reads: $d, log i/o's: $d, sync i/o's: $d$}m;
+      = $fulltext =~ m{^ ibuf aio reads:\s?(\d+)?, log i/o's:\s?(\d+)?, sync 
i/o's:\s?(\d+)?$}m;
    @{$section}{ 'flush_type', 'pending_log_flushes', 
'pending_buffer_pool_flushes' }
       = $fulltext =~ m/^Pending flushes \($w\) log: $d; buffer pool: $d$/m;
    @{$section}{ 'os_file_reads', 'os_file_writes', 'os_fsyncs' }
@@ -1499,6 +1509,13 @@
    { s => 'port|P=i',   d => 'Port number to use for connection' },
    { s => 'socket|S=s', d => 'MySQL socket to use for connection' },
    { s => 'timestamp|t+', d => 'Print timestamp in -n mode (1: per iter; 2: 
per line)' },
+   { s => 'ssl', d => 'Passed to mysql_ssl', c => 'mysql_ssl' },
+   { s => 'ssl_ca_file=s', d => 'Passed to mysql_ssl_ca_file', c => 
'mysql_ssl_ca_file' },
+   { s => 'ssl_ca_path=s', d => 'Passed to mysql_ssl_ca_path', c => 
'mysql_ssl_ca_path' },
+   { s => 'ssl_verify_server_cert', d => 'Passed to 
mysql_ssl_verify_server_cert', c => 'mysql_ssl_verify_server_cert' },
+   { s => 'ssl_client_key=s', d => 'Passed to mysql_ssl_client_key', c => 
'mysql_ssl_client_key' },
+   { s => 'ssl_client_cert=s', d => 'Passed to mysql_ssl_client_cert', c => 
'mysql_ssl_client_cert' },
+   { s => 'ssl_cipher=s', d => 'Passed to mysql_ssl_cipher', c => 
'mysql_ssl_cipher' },
 );
 
 # This is the container for the command-line options' values to be stored in
@@ -1577,7 +1594,7 @@
    NumTxns           => q{scalar @{ IB_tx_transactions } },
    DirtyBufs         => q{ $cur->{IB_bp_pages_modified} / 
($cur->{IB_bp_buf_pool_size} || 1) },
    BufPoolFill       => q{ $cur->{IB_bp_pages_total} / 
($cur->{IB_bp_buf_pool_size} || 1) },
-   ServerLoad        => q{ 
$cur->{Threads_connected}/(Questions||1)/Uptime_hires },
+   ServerLoad        => q{ $cur->{Threads_connected}/(Queries||1)/Uptime_hires 
},
    Connection        => q{ max_connections || $cur->{Threads_connected} },
    chcxn_2_cxn       => q{ if ( defined($cur->{cxn}) ) { return $cur->{cxn}; } 
else { my ($cha, $conn) = split ("=",$cur->{chcxn}) ;  return $conn; } },
    chcxn_2_ch        => q{ if ( defined($cur->{channel_name}) ) { return 
$cur->{channel_name}; } else { my ($cha, $conn) = split ("=",$cur->{chcxn}) ; 
$cha = '' if ($cha = /no_channels/); return $cha || 'failed'; } },
@@ -1585,10 +1602,10 @@
    SlaveCatchupRate  => ' defined $cur->{seconds_behind_master} && defined 
$pre->{seconds_behind_master} && $cur->{seconds_behind_master} < 
$pre->{seconds_behind_master} ? 
($pre->{seconds_behind_master}-$cur->{seconds_behind_master})/($cur->{Uptime_hires}-$pre->{Uptime_hires})
 : 0',
    QcacheHitRatio    => 
q{(Qcache_hits||0)/(((Com_select||0)+(Qcache_hits||0))||1)},
    QueryDetail       => q{sprintf("%2d/%2d/%2d/%2d",
-                           
((Com_select||0)+(Qcache_hits||0))/(Questions||1)*100,
-                            
((Com_insert||0)+(Com_replace||0))/(Questions||1)*100,
-                            (Com_update||0)/(Questions||1)*100,
-                            (Com_delete||0)/(Questions||1)*100,
+                           ((Com_select||0)+(Qcache_hits||0))/(Queries||1)*100,
+                            
((Com_insert||0)+(Com_replace||0))/(Queries||1)*100,
+                            (Com_update||0)/(Queries||1)*100,
+                            (Com_delete||0)/(Queries||1)*100,
 )},
 );
 
@@ -1607,7 +1624,7 @@
 
 my %columns = (
    active_secs                 => { hdr => 'SecsActive',          num => 1, 
label => 'Seconds transaction has been active', },
-   add_pool_alloc              => { hdr => 'Add\'l Pool',         num => 1, 
label => 'Additonal pool allocated' },
+   add_pool_alloc              => { hdr => 'Add\'l Pool',         num => 1, 
label => 'Additional pool allocated' },
    attempted_op                => { hdr => 'Action',              num => 0, 
label => 'The action that caused the error' },
    awe_mem_alloc               => { hdr => 'AWE Memory',          num => 1, 
label => '[Windows] AWE memory allocated' },
    binlog_cache_overflow       => { hdr => 'Binlog Cache',        num => 1, 
label => 'Transactions too big for binlog cache that went to disk' },
@@ -1784,7 +1801,7 @@
    query_id                    => { hdr => 'Query ID',            num => 1, 
label => 'Query ID' },
    query_status                => { hdr => 'Query Status',        num => 0, 
label => 'The query status' },
    query_text                  => { hdr => 'Query Text',          num => 0, 
label => 'The query text' },
-   questions                   => { hdr => 'Questions',           num => 1, 
label => 'How many queries the server has gotten', },
+   queries                     => { hdr => 'Queries',             num => 1, 
label => 'How many queries the server has gotten', },
    read_master_log_pos         => { hdr => 'Read Master Pos',     num => 1, 
label => 'Read master log position' },
    read_views_open             => { hdr => 'Rd Views',            num => 1, 
label => 'Number of read views open' },
    reads_pending               => { hdr => 'Pending Reads',       num => 1, 
label => 'Reads pending' },
@@ -1991,7 +2008,7 @@
    general => {
       text => join(
          ', ',
-         'set_precision(Questions/Uptime_hires) as QPS',
+         'set_precision(Queries/Uptime_hires) as QPS',
          'set_precision(Com_commit/Uptime_hires) as Commit_PS',
          'set_precision((Com_rollback||0)/(Com_commit||1)) as Rollback_Commit',
          'set_precision(('
@@ -2015,7 +2032,7 @@
    commands => {
       text => join(
          ', ',
-         qw(Uptime Questions Com_delete Com_delete_multi Com_insert
+         qw(Uptime Queries Com_delete Com_delete_multi Com_insert
          Com_insert_select Com_replace Com_replace_select Com_select Com_update
          Com_update_multi)
       ),
@@ -2139,7 +2156,7 @@
    Com_insert   => 50,
    Com_update   => 50,
    Com_delete   => 50,
-   Questions    => 100,
+   Queries      => 100,
 );
 
 # ###########################################################################
@@ -2797,8 +2814,8 @@
       cust => {},
       cols => {
          cxn            => { src => 'cxn' },
-         questions      => { src => 'Questions' },
-         qps            => { src => 'Questions/Uptime_hires',               
dec => 1, trans => [qw(shorten)] },
+         queries        => { src => 'Queries' },
+         qps            => { src => 'Queries/Uptime_hires',                 
dec => 1, trans => [qw(shorten)] },
          load           => { src => $exprs{ServerLoad},                     
dec => 1, trans => [qw(shorten)] },
          connections    => { src => $exprs{Connection},                     
dec => 1, trans => [qw(shorten)] },
          slow           => { src => 'Slow_queries',                         
dec => 1, trans => [qw(shorten)] },
@@ -3070,7 +3087,7 @@
       cols => {
          cxn                => { src => 'cxn' },
          uptime             => { src => 'Uptime', trans => [qw(fuzzy_time)] },
-         qps                => { src => 'Questions/Uptime_hires', dec => 1, 
trans => [qw(shorten)] },
+         qps                => { src => 'Queries/Uptime_hires', dec => 1, 
trans => [qw(shorten)] },
          spark_qps          => { src => 'SPARK_qps' },
          run                => { src => 'User_threads_running' },
          spark_run          => { src => 'SPARK_run' },
@@ -4196,6 +4213,7 @@
 if ( $EVAL_ERROR || $opts{n} ) {
    # If there was an error, manufacture my own colored() function that does no
    # coloring.
+   undef &colored;
    *colored = sub { pop @_; @_; };
 }
 
@@ -4634,9 +4652,14 @@
    },
    GET_CHANNELS => sub {
       my ( $dbh ) = @_;
-      return $dbh->prepare(version_ge( $dbh, '5.7.0' )
-             ? 'select CHANNEL_NAME from 
performance_schema.replication_applier_status where CHANNEL_NAME regexp 
"^[a-zA-Z].*";'
-             : 'select "no_channels"');
+      if (version_ge( $dbh, '10.0.2' )) {
+       # Not supported or MariaDB specific way to get channel list.
+         return $dbh->prepare('select "no_channels"');
+      } elsif ( ( $dbh->{mysql_serverinfo} =~ /^5.7/ ) || ( 
$dbh->{mysql_serverinfo} =~ /^8/ ) ) { 
+             return $dbh->prepare('select CHANNEL_NAME from 
performance_schema.replication_applier_status where CHANNEL_NAME regexp 
"^[a-zA-Z].*";');
+      } else {
+       return $dbh->prepare('select "no_channels"');
+      }
    },
    KILL_CONNECTION => sub {
       my ( $dbh ) = @_;
@@ -5607,6 +5630,7 @@
                 my $linecount=0;
                 my $sth = do_stmt($cxn, 'GET_CHANNELS');
                 my ( $channel );
+       next if (!$sth);
             $sth->execute();
             $sth->bind_columns( \$channel );
                 while ( $sth->fetch() ) {
@@ -6076,7 +6100,7 @@
 
    if ( $query ) {
 
-      my $part = version_ge($dbhs{$cxn}->{dbh}, '5.1.5') ? 'PARTITIONS' : '';
+      my $part = version_ge($dbhs{$cxn}->{dbh}, '5.1.5') && 
($dbhs{$cxn}->{dbh}->{mysql_serverinfo} !~ /^8\.0\./) ? 'PARTITIONS' : '';
       $query = "EXPLAIN $part\n" . $query;
 
       eval {
@@ -7188,6 +7212,8 @@
          my ($prefix, undef) = split(/\./, $prev);
          $prev = $t;
          if ( $prefix ) {
+            $prefix=~s/\(/\\\(/;
+            $prefix=~s/\)/\\\)/;
             $t =~ s/^$prefix\./-./;
          }
          $query .= " " . $t;
@@ -7282,7 +7308,7 @@
 
       # Format server uptime human-readably, calculate QPS...
       my $uptime = fuzzy_time( $vars->{Uptime_hires} );
-      my $qps    = ($inc->{Questions}||0) / ($inc->{Uptime_hires}||1);
+      my $qps    = ($inc->{Queries}||0) / ($inc->{Uptime_hires}||1);
       my $ibinfo = '';
 
       if ( exists $vars->{IB_last_secs} ) {
@@ -7733,9 +7759,22 @@
       }
    }
 
+   my $defaults = {
+      AutoCommit        => 1,
+      RaiseError        => 1,
+      PrintError        => 0,
+   };
+   $defaults->{mysql_ssl} = $opts{ssl} if $opts{ssl};
+   $defaults->{mysql_ssl_ca_file} = $opts{ssl_ca_file} if $opts{ssl_ca_file};
+   $defaults->{mysql_ssl_ca_path} = $opts{ssl_ca_path} if $opts{ssl_ca_path};
+   $defaults->{mysql_ssl_verify_server_cert} = $opts{ssl_verify_server_cert} 
if $opts{ssl_verify_server_cert};
+   $defaults->{mysql_ssl_client_key} = $opts{ssl_client_key} if 
$opts{ssl_client_key};
+   $defaults->{mysql_ssl_client_cert} = $opts{ssl_client_cert} if 
$opts{ssl_client_cert};
+   $defaults->{mysql_ssl_cipher} = $opts{ssl_cipher} if $opts{ssl_cipher};
+
    my $dbh = DBI->connect(
       $dsn->{dsn}, $dsn->{user}, $dsn->{pass},
-      { RaiseError => 1, PrintError => 0, AutoCommit => 1 });
+      $defaults);
    $dbh->{InactiveDestroy} = 1 unless $destroy; # Can't be set in $db_options
    $dbh->{FetchHashKeyName} = 'NAME_lc'; # Lowercases all column names for 
fetchrow_hashref
    return $dbh;
@@ -9349,7 +9388,7 @@
             my @prev_run = ($pre->{SPARK_store_run} || '') =~ m/(\S+)/g;
 
             # Find out the values; throw away if too many; sparkify; store.
-            my $this_qps = (($vars->{Questions} || 0) - ($pre->{Questions} || 
0))/
+            my $this_qps = (($vars->{Queries} || 0) - ($pre->{Queries} || 0))/
                            ($vars->{Uptime_hires} - $pre->{Uptime_hires});
             push @prev_qps, $this_qps;
             shift @prev_qps if @prev_qps > $config{spark}->{val};
@@ -9803,26 +9842,26 @@
 # Separated handling of slave status to support 5.7 and replication channels
 sub get_slave_status {
    my ($cxn, $channel) = @_;
-                my $chcxn = $channel . '=' . $cxn;
+        my $chcxn = $channel . '=' . $cxn;
          $vars{$chcxn}->{$clock} ||= {};
          my $vars = $vars{$chcxn}->{$clock};
          $vars->{chcxn} = $chcxn;
          $vars->{Uptime_hires} ||= get_uptime($chcxn);
 
-                if ( $channel =~ /no_channels/ ) {
+        if ( $channel =~ /no_channels/ ) {
                my $stmt = do_stmt($cxn, 'SHOW_SLAVE_STATUS') or next;
                my $res = $stmt->fetchall_arrayref({});
-               if ( $res && @$res ) {
+                  if ( $res && @$res ) {
                        $res = $res->[0];
                        @{$vars}{ keys %$res } = values %$res;
                $vars->{Slave_ok} =
                                (($res->{slave_sql_running} || 'Yes') eq 'Yes'
                                && ($res->{slave_io_running} || 'Yes') eq 
'Yes') ? 'Yes' : 'No';
-               }
-               else {
+                  }
+                  else {
                $vars->{Slave_ok} = 'Off';
-               }
-                } else {
+           }
+        } else {
                                 my $dbh = connect_to_db($cxn);
                                 my $sql = 'SHOW SLAVE STATUS FOR CHANNEL \'' . 
$channel . '\''; 
                                 my $stmt = $dbh->prepare($sql ) ;
@@ -11560,12 +11599,12 @@
 Query List"> mode.  This expression calculates the qps, or Queries Per Second,
 column's values, from the values returned by SHOW STATUS:
 
- Questions/Uptime_hires
+ Queries/Uptime_hires
 
 innotop decides both words are barewords, and transforms this expression into
 the following Perl code:
 
- $set->{Questions}/$set->{Uptime_hires}
+ $set->{Queries}/$set->{Uptime_hires}
 
 When surrounded by the rest of the subroutine's code, this is executable Perl
 that calculates a high-resolution queries-per-second value.
@@ -11653,7 +11692,7 @@
  pages_modified     Dirty Pages  Pages modified (dirty  IB_bp_pages_m
  buf_pool_hit_rate  Hit Rate     Buffer pool hit rate   IB_bp_buf_poo
  total_mem_alloc    Memory       Total memory allocate  IB_bp_total_m
- add_pool_alloc     Add'l Pool   Additonal pool alloca  IB_bp_add_poo
+ add_pool_alloc     Add'l Pool   Additional pool alloc  IB_bp_add_poo
 
 The first line shows which table you're editing, and reminds you again to press
 '?' for a list of key mappings.  The rest is a tabular representation of the
@@ -11737,7 +11776,7 @@
 statements.  That's the data source for variable sets.  You can now query this
 data source just like you'd expect.  For example:
 
- Questions, Uptime, Questions/Uptime as QPS
+ Queries, Uptime, Queries/Uptime as QPS
 
 Behind the scenes innotop will split that variable set into three expressions,
 compile them and turn them into a table definition, then extract as usual.  
This
@@ -11755,13 +11794,13 @@
 format the results.  In particular, L<"set_precision"> is often useful to limit
 the number of digits you see.  Extending the above example, here's how:
 
- Questions, Uptime, set_precision(Questions/Uptime) as QPS
+ Queries, Uptime, set_precision(Queries/Uptime) as QPS
 
 Actually, this still needs a little more work.  If your L<"interval"> is less
 than one second, you might be dividing by zero because Uptime is incremental in
 this mode by default.  Instead, use Uptime_hires:
 
- Questions, Uptime, set_precision(Questions/Uptime_hires) as QPS
+ Queries, Uptime, set_precision(Queries/Uptime_hires) as QPS
 
 This example is simple, but it shows how easy it is to choose which variables
 you want to monitor.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/innotop.spec 
new/innotop-1.13.0/innotop.spec
--- old/innotop-1.11.4/innotop.spec     2017-01-20 23:42:40.000000000 +0100
+++ new/innotop-1.13.0/innotop.spec     2021-04-07 17:48:24.000000000 +0200
@@ -3,7 +3,7 @@
 #
 Name:      innotop
 Summary:   A MySQL and InnoDB monitor program.
-Version:   1.11.4
+Version:   1.13.0
 Release:   1%{?dist}
 Vendor:    Baron Schwartz <[email protected]>
 Packager:  Frederic Descamps <[email protected]>
@@ -122,6 +122,9 @@
 %defattr(-,root,root)
 
 %changelog
+* Wed Apr 07 2021 Frederic Descamps <[email protected]> - 1.13.0-1
+ - New version
+
 * Fri Jan 20 2017 Frederic Descamps <[email protected]> - 1.11.4-1
  - Package for github new tag 1.11.4
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/t/InnoDBParser.t 
new/innotop-1.13.0/t/InnoDBParser.t
--- old/innotop-1.11.4/t/InnoDBParser.t 2017-01-20 23:42:40.000000000 +0100
+++ new/innotop-1.13.0/t/InnoDBParser.t 2021-04-07 17:48:24.000000000 +0200
@@ -2,7 +2,7 @@
 use strict;
 use warnings FATAL => 'all';
 use English qw(-no_match_vars);
-use Test::More tests => 6;
+use Test::More tests => 7;
 use Data::Dumper;
 
 my $path;
@@ -33,7 +33,8 @@
    $path . 't/innodb-status-006' => "5.5or-earlier",
    $path . 't/innodb-status-007' => "5.5or-earlier",
    $path . 't/innodb-status-008' => "5.6.12",
-   $path . 't/innodb-status-009' => "5.7.7"
+   $path . 't/innodb-status-009' => "5.7.7",
+   $path . 't/innodb-status-010' => "8.0.12",
 );
 
 my %tests = (
@@ -2181,6 +2182,300 @@
       }
     ],
     IB_tx_trx_id_counter => '849068'
+  },
+  $path . "t/innodb-status-010" => {
+    IB_bp_add_pool_alloc => undef,
+    IB_bp_awe_mem_alloc => 0,
+    IB_bp_buf_free => '7040',
+    IB_bp_buf_pool_hit_rate => '1000 / 1000',
+    IB_bp_buf_pool_hits => '1000',
+    IB_bp_buf_pool_reads => '1000',
+    IB_bp_buf_pool_size => '8192',
+    IB_bp_complete => '1',
+    IB_bp_dict_mem_alloc => '433020',
+    IB_bp_page_creates_sec => '2.00',
+    IB_bp_page_reads_sec => '1.75',
+    IB_bp_page_writes_sec => '20.44',
+    IB_bp_pages_created => '164',
+    IB_bp_pages_modified => '315',
+    IB_bp_pages_read => '983',
+    IB_bp_pages_total => '1147',
+    IB_bp_pages_written => '480',
+    IB_bp_reads_pending => '0',
+    IB_bp_total_mem_alloc => '137428992',
+    IB_bp_writes_pending => '0',
+    IB_bp_writes_pending_flush_list => 0,
+    IB_bp_writes_pending_lru => 0,
+    IB_bp_writes_pending_single_page => 0,
+    IB_dl_complete => undef,
+    IB_dl_rolled_back => undef,
+    IB_dl_timestring => undef,
+    IB_dl_txns => undef,
+    IB_fk_attempted_op => undef,
+    IB_fk_child_db => undef,
+    IB_fk_child_index => undef,
+    IB_fk_child_table => undef,
+    IB_fk_col_name => undef,
+    IB_fk_complete => undef,
+    IB_fk_fk_name => undef,
+    IB_fk_parent_col => undef,
+    IB_fk_parent_db => undef,
+    IB_fk_parent_index => undef,
+    IB_fk_parent_table => undef,
+    IB_fk_reason => undef,
+    IB_fk_records => undef,
+    IB_fk_timestring => undef,
+    IB_fk_trigger => undef,
+    IB_fk_txn => undef,
+    IB_fk_type => undef,
+    IB_got_all => 1,
+    IB_ib_bufs_in_node_heap => '0',
+    IB_ib_complete => 1,
+    IB_ib_free_list_len => '0',
+    IB_ib_hash_searches_s => '69.56',
+    IB_ib_hash_table_size => '34679',
+    IB_ib_inserts => undef,
+    IB_ib_merged_recs => '0',
+    IB_ib_merges => '0',
+    IB_ib_non_hash_searches_s => '65.18',
+    IB_ib_seg_size => '2',
+    IB_ib_size => '1',
+    IB_ib_used_cells => undef,
+    IB_io_avg_bytes_s => '16384',
+    IB_io_complete => 1,
+    IB_io_flush_type => 'fsync',
+    IB_io_fsyncs_s => '193.55',
+    IB_io_os_file_reads => '1006',
+    IB_io_os_file_writes => '5156',
+    IB_io_os_fsyncs => '3111',
+    IB_io_pending_aio_writes => undef,
+    IB_io_pending_buffer_pool_flushes => '0',
+    IB_io_pending_ibuf_aio_reads => undef,
+    IB_io_pending_log_flushes => '0',
+    IB_io_pending_log_ios => undef,
+    IB_io_pending_normal_aio_reads => undef,
+    IB_io_pending_preads => 0,
+    IB_io_pending_pwrites => 0,
+    IB_io_pending_sync_ios => undef,
+    IB_io_reads_s => '1.75',
+    IB_io_threads => {
+      '0' => {
+        event_set => 0,
+        purpose => 'insert buffer thread',
+        state => 'waiting for completed aio requests',
+        thread => '0'
+      },
+      '1' => {
+        event_set => 0,
+        purpose => 'log thread',
+        state => 'waiting for completed aio requests',
+        thread => '1'
+      },
+      '2' => {
+        event_set => 0,
+        purpose => 'read thread',
+        state => 'waiting for completed aio requests',
+        thread => '2'
+      },
+      '3' => {
+        event_set => 0,
+        purpose => 'read thread',
+        state => 'waiting for completed aio requests',
+        thread => '3'
+      },
+      '4' => {
+        event_set => 0,
+        purpose => 'read thread',
+        state => 'waiting for completed aio requests',
+        thread => '4'
+      },
+      '5' => {
+        event_set => 0,
+        purpose => 'read thread',
+        state => 'waiting for completed aio requests',
+        thread => '5'
+      },
+      '6' => {
+        event_set => 0,
+        purpose => 'write thread',
+        state => 'waiting for completed aio requests',
+        thread => '6'
+      },
+      '7' => {
+        event_set => 0,
+        purpose => 'write thread',
+        state => 'waiting for completed aio requests',
+        thread => '7'
+      },
+      '8' => {
+        event_set => 0,
+        purpose => 'write thread',
+        state => 'waiting for completed aio requests',
+        thread => '8'
+      },
+      '9' => {
+        event_set => 0,
+        purpose => 'write thread',
+        state => 'waiting for completed aio requests',
+        thread => '9'
+      }
+    },
+    IB_io_writes_s => '310.61',
+    IB_last_secs => '16',
+    IB_lg_complete => 1,
+    IB_lg_last_chkp => '22702156',
+    IB_lg_log_flushed_to => '23102842',
+    IB_lg_log_ios_done => '4636',
+    IB_lg_log_ios_s => '288.50',
+    IB_lg_log_seq_no => '23102842',
+    IB_lg_pending_chkp_writes => undef,
+    IB_lg_pending_log_writes => undef,
+    IB_ro_complete => 1,
+    IB_ro_del_sec => '0.94',
+    IB_ro_ins_sec => '90.24',
+    IB_ro_main_thread_id => '139764353345280',
+    IB_ro_main_thread_proc_no => '27454',
+    IB_ro_main_thread_state => 'sleeping',
+    IB_ro_n_reserved_extents => 0,
+    IB_ro_num_rows_del => '15',
+    IB_ro_num_rows_ins => '1444',
+    IB_ro_num_rows_read => '413711',
+    IB_ro_num_rows_upd => '340',
+    IB_ro_queries_in_queue => '0',
+    IB_ro_queries_inside => '0',
+    IB_ro_read_sec => '25587.53',
+    IB_ro_read_views_open => 0,
+    IB_ro_upd_sec => '1.50',
+    IB_sm_complete => 1,
+    IB_sm_mutex_os_waits => undef,
+    IB_sm_mutex_spin_rounds => undef,
+    IB_sm_mutex_spin_waits => undef,
+    IB_sm_reservation_count => undef,
+    IB_sm_rw_excl_os_waits => '1',
+    IB_sm_rw_excl_spins => '2',
+    IB_sm_rw_shared_os_waits => '0',
+    IB_sm_rw_shared_spins => '0',
+    IB_sm_signal_count => undef,
+    IB_sm_wait_array_size => 0,
+    IB_sm_waits => [],
+    IB_timestring => '2018-10-12 19:11:10',
+    IB_tx_complete => 1,
+    IB_tx_history_list_len => '16',
+    IB_tx_is_truncated => 0,
+    IB_tx_num_lock_structs => undef,
+    IB_tx_purge_done_for => undef,
+    IB_tx_purge_undo_for => undef,
+    IB_tx_transactions => [
+      {
+        active_secs => 0,
+        has_read_view => 0,
+        heap_size => '1136',
+        hostname => '',
+        ip => '',
+        lock_structs => 0,
+        lock_wait_status => '',
+        lock_wait_time => 0,
+        mysql_thread_id => undef,
+        os_thread_id => undef,
+        proc_no => 0,
+        query_id => undef,
+        query_status => '',
+        query_text => '',
+        row_locks => 0,
+        tables_in_use => 0,
+        tables_locked => 0,
+        thread_decl_inside => 0,
+        thread_status => '',
+        txn_doesnt_see_ge => '',
+        txn_id => '421239837205032',
+        txn_sees_lt => '',
+        txn_status => 'not started',
+        undo_log_entries => 0,
+        user => ''
+      },
+      {
+        active_secs => 0,
+        has_read_view => 0,
+        heap_size => '1136',
+        hostname => '',
+        ip => '',
+        lock_structs => 0,
+        lock_wait_status => '',
+        lock_wait_time => 0,
+        mysql_thread_id => undef,
+        os_thread_id => undef,
+        proc_no => 0,
+        query_id => undef,
+        query_status => '',
+        query_text => '',
+        row_locks => 0,
+        tables_in_use => 0,
+        tables_locked => 0,
+        thread_decl_inside => 0,
+        thread_status => '',
+        txn_doesnt_see_ge => '',
+        txn_id => '421239837203192',
+        txn_sees_lt => '',
+        txn_status => 'not started',
+        undo_log_entries => 0,
+        user => ''
+      },
+      {
+        active_secs => 0,
+        has_read_view => 0,
+        heap_size => '1136',
+        hostname => '',
+        ip => '',
+        lock_structs => 0,
+        lock_wait_status => '',
+        lock_wait_time => 0,
+        mysql_thread_id => undef,
+        os_thread_id => undef,
+        proc_no => 0,
+        query_id => undef,
+        query_status => '',
+        query_text => '',
+        row_locks => 0,
+        tables_in_use => 0,
+        tables_locked => 0,
+        thread_decl_inside => 0,
+        thread_status => '',
+        txn_doesnt_see_ge => '',
+        txn_id => '421239837202272',
+        txn_sees_lt => '',
+        txn_status => 'not started',
+        undo_log_entries => 0,
+        user => ''
+      },
+      {
+        active_secs => 0,
+        has_read_view => 0,
+        heap_size => '1136',
+        hostname => 'localhost',
+        ip => '',
+        lock_structs => 1,
+        lock_wait_status => '',
+        lock_wait_time => 0,
+        mysql_thread_id => '12',
+        os_thread_id => undef,
+        proc_no => 0,
+        query_id => '2432',
+        query_status => 'query end',
+        query_text => q{INSERT INTO t1 VALUES 
(100669,'qnMdipW5KkXdTjGCh2PNzLoeR0527frpQDQ8uw67Ydk1K06uuNHtkxYBxT5w8plb2BbpzhwYBgPNYX9RmICWGkZD6fAESvhMzH3yqzMtXoH4BQNylbK1CmEIPGYlC6')},
+        row_locks => 0,
+        tables_in_use => 1,
+        tables_locked => 1,
+        thread_decl_inside => 0,
+        thread_status => '',
+        txn_doesnt_see_ge => '',
+        txn_id => '8885',
+        txn_sees_lt => '',
+        txn_status => 'ACTIVE (PREPARED)',
+        undo_log_entries => 1,
+        user => 'root'
+      },
+    ],
+    IB_tx_trx_id_counter => '8886'
   }
 );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/innotop-1.11.4/t/innodb-status-010 
new/innotop-1.13.0/t/innodb-status-010
--- old/innotop-1.11.4/t/innodb-status-010      1970-01-01 01:00:00.000000000 
+0100
+++ new/innotop-1.13.0/t/innodb-status-010      2021-04-07 17:48:24.000000000 
+0200
@@ -0,0 +1,119 @@
+*************************** 1. row ***************************
+  Type: InnoDB
+  Name: 
+Status: 
+=====================================
+2018-10-12 19:11:10 0x7f1d8a1b6700 INNODB MONITOR OUTPUT
+=====================================
+Per second averages calculated from the last 16 seconds
+-----------------
+BACKGROUND THREAD
+-----------------
+srv_master_thread loops: 5 srv_active, 0 srv_shutdown, 31 srv_idle
+srv_master_thread log flush and writes: 0
+----------
+SEMAPHORES
+----------
+OS WAIT ARRAY INFO: reservation count 3
+OS WAIT ARRAY INFO: signal count 3
+RW-shared spins 0, rounds 0, OS waits 0
+RW-excl spins 2, rounds 60, OS waits 1
+RW-sx spins 0, rounds 0, OS waits 0
+Spin rounds per wait: 0.00 RW-shared, 30.00 RW-excl, 0.00 RW-sx
+------------
+TRANSACTIONS
+------------
+Trx id counter 8886
+Purge done for trx's n:o < 8122 undo n:o < 0 state: running but idle
+History list length 16
+LIST OF TRANSACTIONS FOR EACH SESSION:
+---TRANSACTION 421239837205032, not started
+0 lock struct(s), heap size 1136, 0 row lock(s)
+---TRANSACTION 421239837203192, not started
+0 lock struct(s), heap size 1136, 0 row lock(s)
+---TRANSACTION 421239837202272, not started
+0 lock struct(s), heap size 1136, 0 row lock(s)
+---TRANSACTION 8885, ACTIVE (PREPARED) 0 sec
+mysql tables in use 1, locked 1
+1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1
+MySQL thread id 12, OS thread handle 139764849305344, query id 2432 localhost 
root query end
+INSERT INTO t1 VALUES 
(100669,'qnMdipW5KkXdTjGCh2PNzLoeR0527frpQDQ8uw67Ydk1K06uuNHtkxYBxT5w8plb2BbpzhwYBgPNYX9RmICWGkZD6fAESvhMzH3yqzMtXoH4BQNylbK1CmEIPGYlC6')
+--------
+FILE I/O
+--------
+I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
+I/O thread 1 state: waiting for completed aio requests (log thread)
+I/O thread 2 state: waiting for completed aio requests (read thread)
+I/O thread 3 state: waiting for completed aio requests (read thread)
+I/O thread 4 state: waiting for completed aio requests (read thread)
+I/O thread 5 state: waiting for completed aio requests (read thread)
+I/O thread 6 state: waiting for completed aio requests (write thread)
+I/O thread 7 state: waiting for completed aio requests (write thread)
+I/O thread 8 state: waiting for completed aio requests (write thread)
+I/O thread 9 state: waiting for completed aio requests (write thread)
+Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
+ ibuf aio reads:, log i/o's:, sync i/o's:
+Pending flushes (fsync) log: 0; buffer pool: 0
+1006 OS file reads, 5156 OS file writes, 3111 OS fsyncs
+1.75 reads/s, 16384 avg bytes/read, 310.61 writes/s, 193.55 fsyncs/s
+-------------------------------------
+INSERT BUFFER AND ADAPTIVE HASH INDEX
+-------------------------------------
+Ibuf: size 1, free list len 0, seg size 2, 0 merges
+merged operations:
+ insert 0, delete mark 0, delete 0
+discarded operations:
+ insert 0, delete mark 0, delete 0
+Hash table size 34679, node heap has 0 buffer(s)
+Hash table size 34679, node heap has 1 buffer(s)
+Hash table size 34679, node heap has 3 buffer(s)
+Hash table size 34679, node heap has 1 buffer(s)
+Hash table size 34679, node heap has 0 buffer(s)
+Hash table size 34679, node heap has 0 buffer(s)
+Hash table size 34679, node heap has 0 buffer(s)
+Hash table size 34679, node heap has 0 buffer(s)
+69.56 hash searches/s, 65.18 non-hash searches/s
+---
+LOG
+---
+Log sequence number          23102842
+Log buffer assigned up to    23102842
+Log buffer completed up to   23102842
+Log written up to            23102842
+Log flushed up to            23102842
+Added dirty pages up to      23102842
+Pages flushed up to          22702156
+Last checkpoint at           22702156
+4636 log i/o's done, 288.50 log i/o's/second
+----------------------
+BUFFER POOL AND MEMORY
+----------------------
+Total large memory allocated 137428992
+Dictionary memory allocated 433020
+Buffer pool size   8192
+Free buffers       7040
+Database pages     1147
+Old database pages 437
+Modified db pages  315
+Pending reads      0
+Pending writes: LRU 0, flush list 0, single page 0
+Pages made young 0, not young 0
+0.00 youngs/s, 0.00 non-youngs/s
+Pages read 983, created 164, written 480
+1.75 reads/s, 2.00 creates/s, 20.44 writes/s
+Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
+Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 
0.00/s
+LRU len: 1147, unzip_LRU len: 0
+I/O sum[0]:cur[0], unzip sum[0]:cur[0]
+--------------
+ROW OPERATIONS
+--------------
+0 queries inside InnoDB, 0 queries in queue
+0 read views open inside InnoDB
+Process ID=27454, Main thread ID=139764353345280 , state=sleeping
+Number of rows inserted 1444, updated 340, deleted 15, read 413711
+90.24 inserts/s, 1.50 updates/s, 0.94 deletes/s, 25587.53 reads/s
+----------------------------
+END OF INNODB MONITOR OUTPUT
+============================
+

Reply via email to