--- --- migrate level1 based HSM info into t_locationinfo table --- CREATE OR REPLACE FUNCTION "public"."level2uri" (varchar) RETURNS varchar AS $$ DECLARE ilevel varchar := split_part(trim($1), E'\n', 1); iuri varchar ; igroup text; istore text; ibfid text ; iinstance text; BEGIN igroup = split_part(ilevel, ' ', 2); istore = split_part(ilevel, ' ', 1); ibfid = split_part(ilevel, ' ', 3); iinstance = split_part(ilevel, ' ', 4); IF length(iinstance) <> 0 THEN return 'osm://' || iinstance || '/?store=' || istore || '&group=' || igroup || '&bfid=' || ibfid; ELSE return 'osm://osm/?store=' || istore || '&group=' || igroup || '&bfid=' || ibfid; END IF; END; $$ LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION "public"."osm2chimera" () RETURNS void AS $$ DECLARE ichain RECORD; istring text[] ; igroup text ; istore text ; BEGIN FOR ichain IN SELECT * FROM t_level_1 LOOP BEGIN INSERT INTO t_locationinfo VALUES ( ichain.ipnfsid, 0, level2uri( encode(ichain.ifiledata, 'escape') ), 10, NOW(), NOW(), 1); EXCEPTION WHEN unique_violation THEN -- do nothing RAISE NOTICE 'Tape location for % aready exist.', ichain.ipnfsid; CONTINUE; END; igroup = split_part(encode(ichain.ifiledata, 'escape'), ' ', 2); istore = split_part(encode(ichain.ifiledata, 'escape'), ' ', 1); BEGIN INSERT INTO t_storageinfo VALUES( ichain.ipnfsid, 'osm', istore, igroup); EXCEPTION WHEN unique_violation THEN -- do nothing RAISE NOTICE 'Storage info for % aready exist.', ichain.ipnfsid; CONTINUE; END; END LOOP; END; $$ LANGUAGE 'plpgsql';