On 2013-01-10, at 12:33 , "Lazar, Alexey Vladimirovich" <[email protected]> wrote:
> Hi, developers. > > (Using my slightly modified version of the 2.1-2.2-upgrade-db.sql script from > the 2.3.2 release tar ball.) > > I am now running into the following error: > > 9921 psql:2.1-2.2-upgrade-db_lazar.sql:9789: ERROR: duplicate key value > violates unique constraint "browse_entry_value_key" > 9922 DETAIL: Key (value)=(Walt Disney Studios Home Entertainment ) already > exists. > 9923 CONTEXT: SQL statement "INSERT INTO metabib.browse_entry (value) VALUES > 9924 (metabib.browse_normalize(ind_data.value, > ind_data.field))" > 9925 PL/pgSQL function "reingest_metabib_field_entries" line 32 at SQL > statement > 9926 SQL statement "SELECT metabib.reingest_metabib_field_entries(NEW.id)" > 9927 PL/pgSQL function "indexing_ingest_or_delete" line 129 at PERFORM > 9928 SQL statement "UPDATE biblio.record_entry SET marc=marc WHERE id IN > (SELECT record > 9929 FROM > 9930 metabib.full_rec a JOIN metabib.full_rec b USING (record) > 9931 WHERE > 9932 a.tag = 'LDR' AND a.value LIKE '______g%' > 9933 AND b.tag = '007' AND b.value LIKE 'v___s%')" > 9934 PL/pgSQL function "inline_code_block" line 24 at SQL statement > > The error appears to be caused by the following chunk of code: > > 9756 -- FIXME: add/check SQL statements to perform the upgrade > 9757 DO $FUNC$ > 9758 DECLARE > 9759 same_marc BOOL; > 9760 BEGIN > 9761 -- Check if it is already there > 9762 PERFORM * FROM config.marc21_physical_characteristic_value_map v > 9763 JOIN config.marc21_physical_characteristic_subfield_map s ON > v.ptype_subfield = s.id > 9764 WHERE s.ptype_key = 'v' AND s.subfield = 'e' AND s.start_pos = > '4' AND s.length = '1' > 9765 AND v.value = 's'; > 9766 > 9767 -- If it is, bail. > 9768 IF FOUND THEN > 9769 RETURN; > 9770 END IF; > 9771 > 9772 -- Otherwise, insert it > 9773 INSERT INTO config.marc21_physical_characteristic_value_map > (value,ptype_subfield,label) > 9774 SELECT 's',id,'Blu-ray' > 9775 FROM config.marc21_physical_characteristic_subfield_map > 9776 WHERE ptype_key = 'v' AND subfield = 'e' AND start_pos = '4' > AND length = '1'; > 9777 > 9778 -- And reingest the blue-ray items so that things see the new value > 9779 SELECT INTO same_marc enabled FROM config.internal_flag WHERE name > = 'ingest.reingest.force_on_same_marc'; > 9780 UPDATE config.internal_flag SET enabled = true WHERE name = > 'ingest.reingest.force_on_same_marc'; > 9781 UPDATE biblio.record_entry SET marc=marc WHERE id IN (SELECT record > 9782 FROM > 9783 metabib.full_rec a JOIN metabib.full_rec b USING (record) > 9784 WHERE > 9785 a.tag = 'LDR' AND a.value LIKE '______g%' > 9786 AND b.tag = '007' AND b.value LIKE 'v___s%'); > 9787 UPDATE config.internal_flag SET enabled = same_marc WHERE name = > 'ingest.reingest.force_on_same_marc'; > 9788 END; > 9789 $FUNC$; > > While I continue to poke around the related tables and views, I wonder if > anyone with deeper knowledge of what's going on here has any helpful > troubleshooting suggestions. Continuing to poke around and an extra set of eyes looking at the problem eventually revealed that this error was related to the the first error I encountered when running this script [1]. That extra entry we had in config.metabib_field first prevented a new row from being added [1] and later caused a duplicate key value to be generated, as seen in this error above. Removing that custom entry fixed the issue and the schema upgrade script worked. [1] http://libmail.georgialibraries.org/pipermail/open-ils-dev/2013-January/008747.html Aleksey Lazar PALS IS Developer and Intergrator 507-389-2907 http://www.pals.org/ [email protected]
