vector<long> OsmApiDb::selectNodeIdsForWay(long wayId) { QString sql = "SELECT "; sql += "node_id FROM " + _getWayNodesTableName() + " WHERE way_id = :wayId ORDER BY sequence_id"; return ApiDb::selectNodeIdsForWay(wayId, sql); }
void ServicesDb::createPendingMapIndexes() { for (int i = 0; i < _pendingMapIndexes.size(); i++) { long mapId = _pendingMapIndexes[i]; _execNoPrepare(QString("ALTER TABLE %1 " "ADD CONSTRAINT current_nodes_changeset_id_fkey_%2 FOREIGN KEY (changeset_id) " "REFERENCES %3 (id) MATCH SIMPLE " "ON UPDATE NO ACTION ON DELETE NO ACTION ") .arg(_getNodesTableName(mapId)) .arg(_getMapIdString(mapId)) .arg(_getChangesetsTableName(mapId))); _execNoPrepare(QString("CREATE INDEX %1_tile_idx ON %2 USING btree (tile)") .arg(_getNodesTableName(mapId)) .arg(_getNodesTableName(mapId))); _execNoPrepare(QString("ALTER TABLE %1 " "ADD CONSTRAINT current_relations_changeset_id_fkey_%2 FOREIGN KEY (changeset_id) " "REFERENCES %3 (id) MATCH SIMPLE " "ON UPDATE NO ACTION ON DELETE NO ACTION ") .arg(_getRelationsTableName(mapId)) .arg(_getMapIdString(mapId)) .arg(_getChangesetsTableName(mapId))); _execNoPrepare(QString("ALTER TABLE %1 " "ADD CONSTRAINT current_way_nodes_node_id_fkey_%2 FOREIGN KEY (node_id) " "REFERENCES %3 (id) MATCH SIMPLE " "ON UPDATE NO ACTION ON DELETE NO ACTION, " "ADD CONSTRAINT current_way_nodes_way_id_fkey_%2 FOREIGN KEY (way_id) " "REFERENCES %4 (id) MATCH SIMPLE " "ON UPDATE NO ACTION ON DELETE NO ACTION") .arg(_getWayNodesTableName(mapId)) .arg(_getMapIdString(mapId)) .arg(_getNodesTableName(mapId)) .arg(_getWaysTableName(mapId))); _execNoPrepare(QString("ALTER TABLE %1 " "ADD CONSTRAINT current_ways_changeset_id_fkey_%2 FOREIGN KEY (changeset_id) " "REFERENCES %3 (id) MATCH SIMPLE " "ON UPDATE NO ACTION ON DELETE NO ACTION ") .arg(_getWaysTableName(mapId)) .arg(_getMapIdString(mapId)) .arg(_getChangesetsTableName(mapId))); } _pendingMapIndexes.clear(); }
void ServicesDb::deleteMap(long mapId) { _dropTable(_getRelationMembersTableName(mapId)); _dropTable(_getRelationsTableName(mapId)); _dropTable(_getWayNodesTableName(mapId)); _dropTable(_getWaysTableName(mapId)); _dropTable(_getNodesTableName(mapId)); _dropTable(_getChangesetsTableName(mapId)); _execNoPrepare("DROP SEQUENCE IF EXISTS " + _getNodeSequenceName(mapId) + " CASCADE"); _execNoPrepare("DROP SEQUENCE IF EXISTS " + _getWaySequenceName(mapId) + " CASCADE"); _execNoPrepare("DROP SEQUENCE IF EXISTS " + _getRelationSequenceName(mapId) + " CASCADE"); _exec("DELETE FROM maps WHERE id=:id", (qlonglong)mapId); }