Backport change of expire_logs_days to floating point in MySQL 5.7

Bug #1571606 reported by Norvald H. Ryeng
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
mysql-5.7 (Ubuntu)
Won't Fix
Wishlist
Unassigned

Bug Description

I'm filing this request for backporting a feature from 5.8 to the 5.7
stable branch so that it can be considered by the SRU Team and
returned as input to upstream. Upstream is waiting for response from
distros before deciding whether to backport or not.

Background
==========

The expire_logs_days system variable is an integer number of days to
retain binlog files. The coarse granularity is causing problems with
servers running out of disk space
(http://bugs.mysql.com/bug.php?id=71697).

The proposed change is to make expire_logs_days a floating point
number so that finer granularity can be used if necessary, e.g.:

    SET GLOBAL expire_logs_days= 0.1;

It will also mean that the data type will change:

    SELECT @@expire_logs_days;
    @@expire_logs_days
    1.000000

instead of the current result:

    SELECT @@expire_logs_days;
    @@expire_logs_days
    1

Upstream would like to backport this change to MysQL 5.7. If
backported, it will be done after the release of Ubuntu 16.04, so it
will affect an existing Ubuntu release.

This does not fall under the existing microrelease exception for
MySQL, and so must be considered separately. In consideration of the
microrelease exception requirements, upstream is interested in a
decision for acceptance in an Ubuntu SRU before making the change
upstream, so that any change made, or not made, is consistent across
upstream, Ubuntu and any other distribution that wish to follow suit.

We would like a +1 or a -1 from the SRU team (or Technical Board if
appropriate) on backporting it to 5.7.

Impact
======

If backported, the expire_logs_days will change from an integer number
to a double precision floating point number. It will still be possible
to set it to an integer number, so no applications setting this number
need to change.

Applications reading the number may encounter floating point numbers
where there were previously only integers.

If backported, this will be a built-in, non-optional part of the
server. It is not suited for implementation in an optional plugin.

MySQL 5.7 is not yet in Ubuntu, but will be when the new syntax can be
backported.

Regression potential
====================

The potential for regression is considered low for the following
reasons:

 - Upstream is not aware of any tools that read the variable and parse
   the value.

 - The change is very small and localized

Robie Basak (racb)
Changed in mysql-5.7 (Ubuntu):
importance: Undecided → Wishlist
Revision history for this message
Steve Langasek (vorlon) wrote :

Because this changes the interface of a variable whose value may be parsed by external tools - particularly the sort of tools that would not show up in an archive code search because they are site local - I am -1 on this change for the sru team.

If this functionality is critical for users of 5.7, another approach I could suggest is to implement this as a float internally, but expose the float functionality under a different name (e.g. expire_logs_days_float) with the existing variable mapped to it with floor() or round() as preferred. Obviously this may impose its own compatibility costs upstream for 5.8 and later, so I understand if you don't want to go that route.

Revision history for this message
Robie Basak (racb) wrote :

Let's mark this Won't Fix in Ubuntu for now, to reflect Steve's opinion above.

Changed in mysql-5.7 (Ubuntu):
status: New → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.