<?xml version="1.0"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>CKAN: Ticket #311: Reordering of package resources can lead to integri</title>
    <link>http://localhost/ticket/311</link>
    <description>&lt;p&gt;
Created a new package resource line and then moved it up above existing one and hit save. Result: 500 error. In logs have:
&lt;/p&gt;
&lt;pre class="wiki"&gt;[Sat May 08 21:55:41 2010] [error] [client 86.26.8.30] Error - &amp;lt;class 'sqlalchemy.exceptions.IntegrityError'&amp;gt;: (IntegrityError) duplicate key value violates unique constraint "package_resource_revision_pkey", referer: http://ckan.net/package/edit/cofog
[Sat May 08 21:55:41 2010] [error] [client 86.26.8.30]  'INSERT INTO package_resource_revision (id, package_id, url, format, description, hash, position, state, revision_id, continuity_id) VALUES (%(id)s, %(package_id)s, %(url)s, %(format)s, %(description)s, %(hash)s, %(position)s, %(state)s, %(revision_id)s, %(continuity_id)s)' {'hash': '', 'description': 'The Treasury record of COFOG functions. ', 'format': 'XLS', 'url': 'http://www.hm-treasury.gov.uk/d/cofog_definitions_coins250609.xls', 'package_id': '8482334d-fe2e-4285-9114-5243130f80c0', 'state': 'active', 'continuity_id': '8bf302db-8a80-47d3-b5dc-bc07512a3928', 'position': 3, 'revision_id': 'e4e2cb2d-4bd5-414e-b646-e484f174d9ab', 'id': '8bf302db-8a80-47d3-b5dc-bc07512a3928'}, referer: http://ckan.net/package/edit/cofog
&lt;/pre&gt;</description>
    <language>en-us</language>
    <image>
      <title>CKAN</title>
      <url>http://assets.okfn.org/p/ckan/img/ckan_logo_shortname.png</url>
      <link>http://localhost/ticket/311</link>
    </image>
    <generator>Trac 0.12.3</generator>
    <item>
      
        <dc:creator>rgrp</dc:creator>

      <pubDate>Wed, 19 May 2010 15:14:25 GMT</pubDate>
      <title>status, description changed; resolution set</title>
      <link>http://localhost/ticket/311#comment:1</link>
      <guid isPermaLink="false">http://localhost/ticket/311#comment:1</guid>
      <description>
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;
                changed from &lt;em&gt;new&lt;/em&gt; to &lt;em&gt;closed&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;resolution&lt;/strong&gt;
                set to &lt;em&gt;fixed&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;description&lt;/strong&gt;
              modified (&lt;a href="/ticket/311?action=diff&amp;amp;version=1"&gt;diff&lt;/a&gt;)
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;p&gt;
Resolved (sort of) in cset:489007a10bb9. This was a migration issue.
&lt;/p&gt;
&lt;p&gt;
Tracked this down to fact that on ckan.net we have:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
"package_resource_revision_pkey" PRIMARY KEY, btree (id)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
When it should be:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
"package_resource_revision_pkey" PRIMARY KEY, btree (id, revision_id)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Looking in &lt;a class="source" href="http://localhost/browser/ckan/migration/versions/012_add_resources.py"&gt;browser:ckan/migration/versions/012_add_resources.py&lt;/a&gt; find:
&lt;/p&gt;
&lt;pre class="wiki"&gt;    Column('revision_id', UnicodeText, ForeignKey('revision.id')),
    #NB revision_id should have been primary_key too (joint with id)
&lt;/pre&gt;&lt;p&gt;
How come this was not corrected here or at least noted for upgrade of ckan.net???
&lt;/p&gt;
&lt;p&gt;
I have now fixed this so that others doing migration (at least with v1.0) will end up with correct code.
&lt;/p&gt;
&lt;p&gt;
I have also fixed issue on ckan.net by manual sql!
&lt;/p&gt;
      </description>
      <category>Ticket</category>
    </item>
 </channel>
</rss>