summaryrefslogtreecommitdiffstats
path: root/devel/management/commands
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2013-01-16 23:07:26 +0100
committerDan McGee <dan@archlinux.org>2013-02-09 23:19:27 +0100
commit55179a4f9e8b80d515bae7032af8aefc33ae0192 (patch)
treeeab1401d697d3fd01d00384ad525f6cf195642e5 /devel/management/commands
parent82947873d65d06d4d938402b57e9244629f97228 (diff)
downloadarchweb-55179a4f9e8b80d515bae7032af8aefc33ae0192.tar.gz
archweb-55179a4f9e8b80d515bae7032af8aefc33ae0192.tar.xz
reporead: remove batched_bulk_create
Now that Django 1.5 is out and realized SQLite3 only allows for 999 parameters per SQL call, we don't need to manually batch things up anymore and can let the underlying bulk_create code do it for us. This basically reverts commit 88ee61a39ac3. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'devel/management/commands')
-rw-r--r--devel/management/commands/reporead.py32
1 files changed, 5 insertions, 27 deletions
diff --git a/devel/management/commands/reporead.py b/devel/management/commands/reporead.py
index ab0efee..ccac55f 100644
--- a/devel/management/commands/reporead.py
+++ b/devel/management/commands/reporead.py
@@ -32,7 +32,6 @@ from django.utils.timezone import now
from devel.utils import UserFinder
from main.models import Arch, Package, PackageFile, Repo
-from main.utils import database_vendor
from packages.models import Depend, Conflict, Provision, Replacement, Update
from packages.utils import parse_version
@@ -182,27 +181,6 @@ def create_related(model, package, rel_str, equals_only=False):
return related
-def batched_bulk_create(model, all_objects):
- # for short lists, just bulk_create as we should be fine
- if len(all_objects) < 20:
- return model.objects.bulk_create(all_objects)
-
- if database_vendor(model, mode='write') == 'sqlite':
- # 999 max variables in each SQL statement
- incr = 999 // len(model._meta.fields)
- else:
- incr = 1000
-
- def chunks():
- offset = 0
- while offset < len(all_objects):
- yield all_objects[offset:offset + incr]
- offset += incr
-
- for items in chunks():
- model.objects.bulk_create(items)
-
-
def create_multivalued(dbpkg, repopkg, db_attr, repo_attr):
'''Populate the simplest of multivalued attributes. These are those that
only deal with a 'name' attribute, such as licenses, groups, etc. The input
@@ -256,20 +234,20 @@ def populate_pkg(dbpkg, repopkg, force=False, timestamp=None):
deps += [create_depend(dbpkg, y, 'O') for y in repopkg.optdepends]
deps += [create_depend(dbpkg, y, 'M') for y in repopkg.makedepends]
deps += [create_depend(dbpkg, y, 'C') for y in repopkg.checkdepends]
- batched_bulk_create(Depend, deps)
+ Depend.objects.bulk_create(deps)
dbpkg.conflicts.all().delete()
conflicts = [create_related(Conflict, dbpkg, y) for y in repopkg.conflicts]
- batched_bulk_create(Conflict, conflicts)
+ Conflict.objects.bulk_create(conflicts)
dbpkg.provides.all().delete()
provides = [create_related(Provision, dbpkg, y, equals_only=True)
for y in repopkg.provides]
- batched_bulk_create(Provision, provides)
+ Provision.objects.bulk_create(provides)
dbpkg.replaces.all().delete()
replaces = [create_related(Replacement, dbpkg, y) for y in repopkg.replaces]
- batched_bulk_create(Replacement, replaces)
+ Replacement.objects.bulk_create(replaces)
create_multivalued(dbpkg, repopkg, 'groups', 'groups')
create_multivalued(dbpkg, repopkg, 'licenses', 'license')
@@ -319,7 +297,7 @@ def populate_files(dbpkg, repopkg, force=False):
directory=dirname,
filename=filename)
pkg_files.append(pkgfile)
- batched_bulk_create(PackageFile, pkg_files)
+ PackageFile.objects.bulk_create(pkg_files)
dbpkg.files_last_update = now()
dbpkg.save()