Bug#1140965: upload_history.nmu is dead data — always FALSE while NMUs exist

Fabio Ruhland <[email protected]> Sun, 28 Jun 2026 19:30:40 +0000
Newsgroups gmane.linux.debian.devel.quality-assurance
Message-ID <2f4a0c33199b41f8a0f33db9bbb0b799__46944.194466208$1782675919$gmane$org@heilbronn.dhbw.de>
--_000_2f4a0c33199b41f8a0f33db9bbb0b799heilbronndhbwde_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Package: qa.debian.org
User: [email protected]
Usertags: udd
Severity: normal

The `nmu` boolean in the upload_history table is never set: 0 of 997,602
rows are TRUE, while 38,052 uploads in the same table carry NMU version
conventions in their version string (+nmuN or the non-maintainer
revision form -z.N, Dev-Ref 5.11.2). The upload_history_nmus view
aggregates this same always-FALSE column, so it reports no NMUs anywhere.

Tools that try to identify non-maintainer uploads via upload_history.nmu
therefore silently get zero results. We currently detect NMUs from the
version string instead.

Suggested resolution: either populate `nmu` (e.g. from the version-string
conventions above), or document the column as unmaintained/deprecated and
note the version-string approach so downstream users don't rely on it.

Reproduction (against the public mirror):
  SELECT count(*) FILTER (WHERE nmu),
         count(*) FILTER (WHERE version ~ '\+nmu[0-9]+$'
                             OR version ~ '-[0-9]+\.[0-9]+$')
  FROM upload_history;

--_000_2f4a0c33199b41f8a0f33db9bbb0b799heilbronndhbwde_
Content-Type: text/html; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DWindows-1=
252">
<style type=3D"text/css" style=3D"display:none;"><!-- P {margin-top:0;margi=
n-bottom:0;} --></style>
</head>
<body dir=3D"ltr">
<div id=3D"divtagdefaultwrapper" style=3D"font-size:12pt;color:#000000;font=
-family:Calibri,Helvetica,sans-serif;" dir=3D"ltr">
<div>Package: qa.debian.org</div>
<div>User: [email protected]</div>
<div>Usertags: udd</div>
<div>Severity: normal&nbsp;</div>
<div><br>
</div>
<div>
<div>The `nmu` boolean in the upload_history table is never set: 0 of 997,6=
02</div>
<div>rows are TRUE, while 38,052 uploads in the same table carry NMU versio=
n</div>
<div>conventions in their version string (&#43;nmuN or the non-maintainer</=
div>
<div>revision form -z.N, Dev-Ref 5.11.2). The upload_history_nmus view</div=
>
<div>aggregates this same always-FALSE column, so it reports no NMUs anywhe=
re.</div>
<div><br>
</div>
<div>Tools that try to identify non-maintainer uploads via upload_history.n=
mu</div>
<div>therefore silently get zero results. We currently detect NMUs from the=
</div>
<div>version string instead.</div>
<div><br>
</div>
<div>Suggested resolution: either populate `nmu` (e.g. from the version-str=
ing</div>
<div>conventions above), or document the column as unmaintained/deprecated =
and</div>
<div>note the version-string approach so downstream users don't rely on it.=
</div>
<div><br>
</div>
<div>Reproduction (against the public mirror):</div>
<div>&nbsp; SELECT count(*) FILTER (WHERE nmu),</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count(*) FILTER (WHERE version ~ '\&=
#43;nmu[0-9]&#43;$'</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OR version ~ '-[0-9]&#43;\.[0-9]&#43;$')<=
/div>
<div>&nbsp; FROM upload_history;</div>
</div>
</div>
</body>
</html>

--_000_2f4a0c33199b41f8a0f33db9bbb0b799heilbronndhbwde_--