#337: Wrong checking of UNIQUE constraints on insert
------------------------+------------------------------
Reporter: olemis | Owner: nobody
Type: defect | Status: new
Priority: critical | Milestone: Release 4
Component: dashboard | Version: 0.3.0
Resolution: | Keywords: model sql insert
------------------------+------------------------------
Changes (by olemis):
* keywords: => model sql insert
* priority: major => critical
* cc: olemis+bh@… (added)
* milestone: => Release 4
Old description:
New description:
Two checks are performed immediately before inserting new records in the
database . Firstly key values are proven to be unique . Afterwards column
uniqueness is asserted. If any of them fails then an exception is raised
to indicate that target row already exists.
Fact is that the second check as it stands nowadays will always fail if
`cls._meta['unique_fields']` is empty . For instance , for this model
class
{{{
#!python
class ProductSetting(ModelBase):
"""The Product configuration table
"""
_meta = {'table_name':'bloodhound_productconfig',
'object_name':'ProductSetting',
'key_fields':['product', 'section', 'option'],
'non_key_fields':['value', ],
'no_change_fields':['product', 'section', 'option'],
'unique_fields':[],
}
}}}
... second (i.e. uniqueness) query looks like this
{{{
#!sql
SELECT product,section,option,value FROM bloodhound_productconfig
}}}
As a consequence it is impossible to insert more than a single value in
target model table.
--
--
Ticket URL: <https://issues.apache.org/bloodhound/ticket/337#comment:1>
Apache Bloodhound <https://issues.apache.org/bloodhound/>
The Apache Bloodhound (incubating) issue tracker