Maplat

 view release on metacpan or  search on metacpan

Examples/helloworld/create_tables.sql  view on Meta::CPAN


ALTER TABLE ONLY errors
    ADD CONSTRAINT rbserrors_pk PRIMARY KEY (error_id);



ALTER TABLE ONLY users
    ADD CONSTRAINT rbsusers_pk PRIMARY KEY (username);



ALTER TABLE ONLY users_settings
    ADD CONSTRAINT rbsusers_settings_pk PRIMARY KEY (username, name);




CREATE INDEX documents_detxtidx ON documents USING gin (german_tsearch);



CREATE INDEX documents_entxtidx ON documents USING gin (english_tsearch);




CREATE INDEX documents_idx1 ON documents USING btree (username, is_public);



CREATE INDEX documents_idx2 ON documents USING btree (filename);


CREATE TRIGGER documents_search_update
    BEFORE INSERT OR UPDATE ON documents
    FOR EACH ROW
    EXECUTE PROCEDURE documents_search_trigger();



ALTER TABLE ONLY documents
    ADD CONSTRAINT "documents/users" FOREIGN KEY (username) REFERENCES users(username) ON UPDATE CASCADE ON DELETE CASCADE;




ALTER TABLE ONLY users_settings
    ADD CONSTRAINT rbsusers_settings_fk1 FOREIGN KEY (username) REFERENCES users(username) ON UPDATE CASCADE ON DELETE CASCADE;



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 2.334 seconds using v1.01-cache-2.11-cpan-bbb979687b5 )