コード例 #1
0
ファイル: OsmApiDb.cpp プロジェクト: andyneff/hootenanny
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);
}
コード例 #2
0
ファイル: ServicesDb.cpp プロジェクト: msorenson/hootenanny
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();
}
コード例 #3
0
ファイル: ServicesDb.cpp プロジェクト: msorenson/hootenanny
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);
}