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 @@ [](https://waffle.io/innotop/innotop) + + + 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 +============================ +
