[osmosis-dev] There is no way to automatically disable all indexes for a table

Martin Schafran martin at ampelmeter.com
Sun Jun 9 22:00:02 UTC 2013


hi,

relying upon automatic dropping I lost some time, because they are not dropped 
in postgresql.
public void disableIndexes(List<String> tables) {
		switch (loginCredentials.getDbType()) {
        case POSTGRESQL:
			// There is no way to automatically disable all indexes for a table.
			break;
        case MYSQL:



what about hard coding those commands at the appropriate place?

for apidb import:

--###############  NODES
--DROPPING
DROP INDEX nodes_changeset_id_idx;

DROP INDEX nodes_tile_idx;

DROP INDEX nodes_timestamp_idx;
  
ALTER TABLE nodes
  DROP CONSTRAINT nodes_changeset_id_fkey;
  
ALTER TABLE nodes
  DROP CONSTRAINT nodes_redaction_id_fkey;
  
  
--CREATION
ALTER TABLE nodes
  ADD CONSTRAINT nodes_changeset_id_fkey FOREIGN KEY (changeset_id)
      REFERENCES changesets (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
      
ALTER TABLE nodes
  ADD CONSTRAINT nodes_redaction_id_fkey FOREIGN KEY (redaction_id)
      REFERENCES redactions (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
      
CREATE INDEX nodes_changeset_id_idx
  ON nodes
  USING btree
  (changeset_id);
  
CREATE INDEX nodes_tile_idx
  ON nodes
  USING btree
  (tile);


CREATE INDEX nodes_timestamp_idx
  ON nodes
  USING btree
  ("timestamp");
  
      
      
-- #############  NODE TAGS

ALTER TABLE node_tags
  DROP CONSTRAINT node_tags_id_fkey;
  
  
ALTER TABLE node_tags
  ADD CONSTRAINT node_tags_id_fkey FOREIGN KEY (node_id, version)
      REFERENCES nodes (node_id, version) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

  
  
--#################   WAYS

DROP INDEX ways_changeset_id_idx;



DROP INDEX ways_timestamp_idx;


ALTER TABLE ways
  DROP CONSTRAINT ways_changeset_id_fkey;

  ALTER TABLE ways
  DROP CONSTRAINT ways_redaction_id_fkey;

  
  ALTER TABLE ways
  ADD CONSTRAINT ways_changeset_id_fkey FOREIGN KEY (changeset_id)
      REFERENCES changesets (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE ways
  ADD CONSTRAINT ways_redaction_id_fkey FOREIGN KEY (redaction_id)
      REFERENCES redactions (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

  CREATE INDEX ways_changeset_id_idx
  ON ways
  USING btree
  (changeset_id);
    
  CREATE INDEX ways_timestamp_idx
  ON ways
  USING btree
  ("timestamp");
    
      
--#################   WAY TAGS
ALTER TABLE way_tags
  DROP CONSTRAINT way_tags_id_fkey;
  
  
ALTER TABLE way_tags
  ADD CONSTRAINT way_tags_id_fkey FOREIGN KEY (way_id, version)
      REFERENCES ways (way_id, version) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

  
--#################   WAY NODES

ALTER TABLE way_nodes
  DROP CONSTRAINT way_nodes_id_fkey;
  
  
ALTER TABLE way_nodes
  ADD CONSTRAINT way_nodes_id_fkey FOREIGN KEY (way_id, version)
      REFERENCES ways (way_id, version) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;




--#################   RELATIONS
DROP INDEX relations_changeset_id_idx;


DROP INDEX relations_timestamp_idx;

 
  
  ALTER TABLE relations
  DROP CONSTRAINT relations_changeset_id_fkey;
ALTER TABLE relations
  DROP CONSTRAINT relations_redaction_id_fkey;
  
  
ALTER TABLE relations
  ADD CONSTRAINT relations_changeset_id_fkey FOREIGN KEY (changeset_id)
      REFERENCES changesets (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE relations
  ADD CONSTRAINT relations_redaction_id_fkey FOREIGN KEY (redaction_id)
      REFERENCES redactions (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

  CREATE INDEX relations_changeset_id_idx
  ON relations
  USING btree
  (changeset_id);

CREATE INDEX relations_timestamp_idx
  ON relations
  USING btree
  ("timestamp");
 
      
--#################   RELATION TAGS
ALTER TABLE relation_tags
  DROP CONSTRAINT relation_tags_id_fkey;
  
  
ALTER TABLE relation_tags
  ADD CONSTRAINT relation_tags_id_fkey FOREIGN KEY (relation_id, version)
      REFERENCES relations (relation_id, version) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;


--#################   RELATION MEMBERS
  
DROP INDEX relation_members_member_idx;


ALTER TABLE relation_members
  DROP CONSTRAINT relation_members_id_fkey;
  
  
ALTER TABLE relation_members
  ADD CONSTRAINT relation_members_id_fkey FOREIGN KEY (relation_id, version)
      REFERENCES relations (relation_id, version) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

  
CREATE INDEX relation_members_member_idx
  ON relation_members
  USING btree
  (member_type, member_id);




martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.openstreetmap.org/pipermail/osmosis-dev/attachments/20130610/dbbe343a/attachment.pgp>


More information about the osmosis-dev mailing list