Get multilib package differences query working on sqlite3
Thank you database engines for all implementing such simple operations as substring() and length() in different ways. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
0f3c894e7a
commit
3c906888e2
@ -8,7 +8,8 @@
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from main.models import Package, PackageFile, Arch, Repo
|
||||
from main.utils import cache_function, groupby_preserve_order, PackageStandin
|
||||
from main.utils import (cache_function, database_vendor,
|
||||
groupby_preserve_order, PackageStandin)
|
||||
from .models import (PackageGroup, PackageRelation,
|
||||
License, Depend, Conflict, Provision, Replacement,
|
||||
SignoffSpecification, Signoff, DEFAULT_SIGNOFF_SPEC)
|
||||
@ -150,12 +151,18 @@ def get_differences_info(arch_a, arch_b):
|
||||
|
||||
def multilib_differences():
|
||||
# Query for checking multilib out of date-ness
|
||||
sql = """
|
||||
SELECT ml.id, reg.id
|
||||
FROM packages ml
|
||||
JOIN packages reg
|
||||
ON (
|
||||
reg.pkgname = (
|
||||
if database_vendor(Package) == 'sqlite':
|
||||
pkgname_sql = """
|
||||
CASE WHEN ml.pkgname LIKE %s
|
||||
THEN SUBSTR(ml.pkgname, 7)
|
||||
WHEN ml.pkgname LIKE %s
|
||||
THEN SUBSTR(ml.pkgname, 1, LENGTH(ml.pkgname) - 9)
|
||||
ELSE
|
||||
ml.pkgname
|
||||
END
|
||||
"""
|
||||
else:
|
||||
pkgname_sql = """
|
||||
CASE WHEN ml.pkgname LIKE %s
|
||||
THEN SUBSTRING(ml.pkgname, 7)
|
||||
WHEN ml.pkgname LIKE %s
|
||||
@ -163,7 +170,13 @@ def multilib_differences():
|
||||
ELSE
|
||||
ml.pkgname
|
||||
END
|
||||
)
|
||||
"""
|
||||
sql = """
|
||||
SELECT ml.id, reg.id
|
||||
FROM packages ml
|
||||
JOIN packages reg
|
||||
ON (
|
||||
reg.pkgname = (""" + pkgname_sql + """)
|
||||
AND reg.pkgver != ml.pkgver
|
||||
)
|
||||
JOIN repos r ON reg.repo_id = r.id
|
||||
@ -172,7 +185,7 @@ def multilib_differences():
|
||||
AND r.staging = %s
|
||||
AND reg.arch_id = %s
|
||||
ORDER BY ml.last_update
|
||||
"""
|
||||
"""
|
||||
multilib = Repo.objects.get(name__iexact='multilib')
|
||||
i686 = Arch.objects.get(name='i686')
|
||||
params = ['lib32-%', '%-multilib', multilib.id, False, False, i686.id]
|
||||
|
Loading…
Reference in New Issue
Block a user