<html><body>
<p><font size="2" face="sans-serif">Hi Glance team,</font><br>
<br>
<font size="2" face="sans-serif">The question is from a bug </font><a href="https://bugs.launchpad.net/glance/+bug/1462315"><font size="2" face="sans-serif">https://bugs.launchpad.net/glance/+bug/1462315</font></a><font size="2" face="sans-serif">, </font><br>
<br>
<tt><font size="2">If an image-member is deleted, then create it again with the same parameters, glance searches db to see if there is already an existing one, but the result doesn't include the record which was marked as deleted, </font></tt><br>
<tt><font size="2">glance will try to create a new one with the same parameters, it works well on mysql. But it is failed on DB2 with SQL0803N error.</font></tt><br>
<br>
<font size="2" face="serif">The root cause is that DB2 constraint is more restricted than mysql. For db2, the columns under unique constrains should be "NOT NULL", currently the column "deleted_at" which is one of unique constrain of image_members</font><br>
<font size="2" face="serif">is nullable. A possible solution is to alter it to "not null" in migration. that means we have to insert a default timestamp value for the new created image-member, an active member with a no-blank timestamp for "deleted_at" seems very confusing.   </font><br>
<br>
<tt><font size="2">Another fix is: we may check all existing image-member records including the deleted image-member before create image-member, then update it if it exists, otherwise create a new one, that is proposed in </font></tt><a href="https://review.openstack.org/#/c/190895/"><tt><font size="2">https://review.openstack.org/#/c/190895/</font></tt></a><br>
<br>
<br>
<font size="2" face="serif">I'm wondering why can't we use only one record to maintain the member-ship between a pair of image and tenant. Maybe there is some other consideration, I'd like to know more. Thanks.</font><br>
<br>
<br>
<font size="2" face="sans-serif">Best regards,</font><br>
<font size="2" face="sans-serif">LongQuan</font><br>
</body></html>