Opened 9 years ago

Closed 9 years ago

Last modified 7 years ago

#12560 closed (fixed)

Unique validation should not check for null atuo-assigned PK

Reported by: Karen Tracey Owned by: nobody
Component: Uncategorized Version: master
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


Initially noted here:

The model validation unique check code is issuing an unnecessary query when adding new instances of models with auto-assigned PKs:

Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
u'1.2 alpha 1 SVN-12120'
>>> from ttt.models import Tag
>>> from django import forms
>>> class TagForm(forms.ModelForm):
...     class Meta:
...         model = Tag
>>> tf1 = TagForm({'name': 'T1'})
>>> tf1.is_valid()
>>> from django.db import connection
>>> connection.queries
[{'time': '0.002', 'sql': u'SELECT (1) AS `a`, `ttt_tag`.`id`, `ttt_tag`.`name` FROM `ttt_tag` WHERE `ttt_tag`.`id` IS NULL LIMIT 1'}]

Besides being unnecessary, that's a query that will potentially return an unexpected result on MySQL, see:

This is similar to #12132, only for adding new instances instead of changing existing ones.

Attachments (1)

12560.diff (1.8 KB) - added by Honza Král 9 years ago.
Quick fix to get the discussion started, may not be 100%

Download all attachments as: .zip

Change History (5)

Changed 9 years ago by Honza Král

Attachment: 12560.diff added

Quick fix to get the discussion started, may not be 100%

comment:1 Changed 9 years ago by Honza Král

Has patch: set

Added a quick patch, haven't checked everything, so only take it as an idea how to solve this. Unfortunately I don't have time this weekend, but I am hoping the sprinters might.

comment:2 Changed 9 years ago by Waldemar Kornewald

Any progress? This is just a one-line fix. Maybe it should be limited to primary_key fields, I don't know.

comment:3 Changed 9 years ago by jkocherhans

Resolution: fixed
Status: newclosed

(In [12227]) Fixed #12560. Changed validate_unique to stop checking null primary key values. Thanks, Honza Král.

comment:4 Changed 7 years ago by Jacob

milestone: 1.2

Milestone 1.2 deleted

Note: See TracTickets for help on using tickets.
Back to Top