Maplat
view release on metacpan or search on metacpan
Examples/helloworld/create_tables.sql view on Meta::CPAN
REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;
CREATE TABLE memcachedb
(
mckey text NOT NULL,
mcdata text NOT NULL,
CONSTRAINT memcachedb_pk PRIMARY KEY (mckey) USING INDEX TABLESPACE "RBS_INDEX1"
)
WITH (
FILLFACTOR=20,
OIDS=FALSE
)
TABLESPACE "RBS_DATA";
ALTER TABLE memcachedb OWNER TO "MAPLAT_Server";
CREATE OR REPLACE FUNCTION merge_memcachedb(mc_key text, mc_data text)
RETURNS void AS
$BODY$
BEGIN
LOOP
-- first try to update the key
UPDATE memcachedb SET mcdata = mc_data WHERE mckey = mc_key;
IF found THEN
RETURN;
END IF;
-- not there, so try to insert the key
-- if someone else inserts the same key concurrently,
-- we could get a unique-key failure
BEGIN
INSERT INTO memcachedb (mckey, mcdata) VALUES (mc_key, mc_data);
RETURN;
EXCEPTION WHEN unique_violation THEN
-- do nothing, and loop to try the UPDATE again
END;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION merge_memcachedb(text, text) OWNER TO "MAPLAT_Server";
( run in 0.255 second using v1.01-cache-2.11-cpan-454fe037f31 )