summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rwxr-xr-xlib/mysql-functions18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/mysql-functions b/lib/mysql-functions
index 9fe0984..c0f7790 100755
--- a/lib/mysql-functions
+++ b/lib/mysql-functions
@@ -1179,14 +1179,28 @@ mysql_update_versions_ordering() {
)
}
-# mysql_sort_versions
-# sort the table of versions
+# mysql_sort_versions [-f]
+# sort the table of versions, iff versions without order exist or -f was
+# given
+
mysql_sort_versions() {
( # new shell is intentional
tmp_file=$(
mktemp "tmp.mysql_sort_versions.XXXXXXXXXX" --tmpdir
)
trap 'rm "${tmp_file}"' EXIT
+ if [ "x$1" != 'x-f' ] && \
+ {
+ printf 'SELECT'
+ printf ' COUNT(1)'
+ printf ' FROM `versions`'
+ printf ' WHERE `versions`.`order` IS NULL'
+ } | \
+ mysql_run_query | \
+ grep -qxF '0'; then
+ # nothing to do
+ return 0
+ fi
{
printf 'SELECT '
printf '`versions`.`%s`,' \