Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "OsmDatabase.h"
00009 #include "../sqllib/sqllib.h"
00010 #include <functional>
00011 #include <vector>
00012
00013 namespace osmdb
00014 {
00015
00016 OsmDatabase::OsmDatabase(psql::Database& db):
00017 db(db)
00018 {
00019 }
00020
00021 OsmDatabase::~OsmDatabase()
00022 {
00023 }
00024
00025 psql::Database& OsmDatabase::get_db()
00026 {
00027 return db;
00028 }
00029
00030 void OsmDatabase::create_indexes_and_keys()
00031 {
00032 create_primary_keys();
00033 create_foreign_keys();
00034 create_indexes();
00035 }
00036
00037 void OsmDatabase::create_indexes()
00038 {
00039 create_edge_indexes();
00040 sqllib::get_create_nodes_loc_index(db).execute();
00041 sqllib::get_create_nodeattr_keyval_index(db).execute();
00042 sqllib::get_create_wayattr_keyval_index(db).execute();
00043 sqllib::get_create_relattr_keyval_index(db).execute();
00044 }
00045
00046 void OsmDatabase::create_foreign_keys()
00047 {
00048 create_edge_foreign_keys();
00049 sqllib::get_create_waymembers_way_fkey(db).execute();
00050 sqllib::get_create_waymembers_relation_fkey(db).execute();
00051 sqllib::get_create_nodemembers_node_fkey(db).execute();
00052 sqllib::get_create_nodemembers_relation_fkey(db).execute();
00053 sqllib::get_create_nodeattributes_nodes_fkey(db).execute();
00054 sqllib::get_create_wayattributes_ways_fkey(db).execute();
00055 sqllib::get_create_relationattributes_relation_fkey(db).execute();
00056 sqllib::get_create_relmembers_child_fkey(db).execute();
00057 sqllib::get_create_relmembers_parent_fkey(db).execute();
00058 }
00059
00060 void OsmDatabase::create_primary_keys()
00061 {
00062 sqllib::get_create_nodes_pkey(db).execute();
00063 sqllib::get_create_ways_pkey(db).execute();
00064 sqllib::get_create_relations_pkey(db).execute();
00065 sqllib::get_create_waymembers_pkey(db).execute();
00066 sqllib::get_create_nodemembers_pkey(db).execute();
00067 create_edge_primary_keys();
00068 sqllib::get_create_nodeattributes_pkey(db).execute();
00069 sqllib::get_create_wayattributes_pkey(db).execute();
00070 sqllib::get_create_relationattributes_pkey(db).execute();
00071 sqllib::get_create_relmembers_pkey(db).execute();
00072 }
00073
00074 void OsmDatabase::drop_indexes_and_keys()
00075 {
00076 drop_indexes();
00077 drop_foreign_keys();
00078 drop_primary_keys();
00079 }
00080
00081 void OsmDatabase::drop_indexes()
00082 {
00083 sqllib::get_drop_relattr_keyval_index(db).execute();
00084 sqllib::get_drop_wayattr_keyval_index(db).execute();
00085 sqllib::get_drop_nodeattr_keyval_index(db).execute();
00086 sqllib::get_drop_nodes_loc_index(db).execute();
00087 drop_edge_indexes();
00088 }
00089
00090 void OsmDatabase::drop_foreign_keys()
00091 {
00092 sqllib::get_drop_relationattributes_relation_fkey(db).execute();
00093 sqllib::get_drop_wayattributes_ways_fkey(db).execute();
00094 sqllib::get_drop_nodeattributes_nodes_fkey(db).execute();
00095 drop_edge_foreign_keys();
00096 sqllib::get_drop_nodemembers_relation_fkey(db).execute();
00097 sqllib::get_drop_nodemembers_node_fkey(db).execute();
00098 sqllib::get_drop_waymembers_relation_fkey(db).execute();
00099 sqllib::get_drop_waymembers_way_fkey(db).execute();
00100 sqllib::get_drop_relmembers_child_fkey(db).execute();
00101 sqllib::get_drop_relmembers_parent_fkey(db).execute();
00102 }
00103
00104 void OsmDatabase::drop_primary_keys()
00105 {
00106 sqllib::get_drop_relmembers_pkey(db).execute();
00107 sqllib::get_drop_relationattributes_pkey(db).execute();
00108 sqllib::get_drop_wayattributes_pkey(db).execute();
00109 sqllib::get_drop_nodeattributes_pkey(db).execute();
00110 sqllib::get_drop_nodemembers_pkey(db).execute();
00111 sqllib::get_drop_waymembers_pkey(db).execute();
00112 sqllib::get_drop_nodes_pkey(db).execute();
00113 sqllib::get_drop_ways_pkey(db).execute();
00114 sqllib::get_drop_relations_pkey(db).execute();
00115 drop_edge_primary_keys();
00116 }
00117
00118 void OsmDatabase::create_tables()
00119 {
00120 sqllib::get_create_nodes_table(db).execute();
00121 sqllib::get_create_ways_table(db).execute();
00122 create_edge_tables();
00123 sqllib::get_create_node_attributes(db).execute();
00124 sqllib::get_create_way_attributes(db).execute();
00125 sqllib::get_create_relations_table(db).execute();
00126 sqllib::get_create_node_members(db).execute();
00127 sqllib::get_create_way_members_table(db).execute();
00128 sqllib::get_create_relation_attributes(db).execute();
00129 sqllib::get_create_toshow_table(db).execute();
00130 sqllib::get_create_relation_members(db).execute();
00131 sqllib::get_create_import_seq(db).execute();
00132 sqllib::get_create_import_table(db).execute();
00133
00134 }
00135
00136 void OsmDatabase::create_edge_tables()
00137 {
00138 sqllib::get_create_edges_table(db).execute();
00139 sqllib::get_create_waynodes_table(db).execute();
00140 }
00141
00142 void OsmDatabase::create_edge_primary_keys()
00143 {
00144 sqllib::get_create_edges_pkey(db).execute();
00145 sqllib::get_create_waynodes_pkey(db).execute();
00146 }
00147
00148 void OsmDatabase::create_edge_foreign_keys()
00149 {
00150 sqllib::get_create_waynodes_node_fkey(db).execute();
00151 sqllib::get_create_waynodes_way_fkey(db).execute();
00152 sqllib::get_create_edges_startnode_fkey(db).execute();
00153 sqllib::get_create_edges_endnode_fkey(db).execute();
00154 sqllib::get_create_edges_wayid_fkey(db).execute();
00155 }
00156
00157 void OsmDatabase::create_edge_indexes()
00158 {
00159 sqllib::get_create_edges_location_index(db).execute();
00160 }
00161
00162 void OsmDatabase::create_edge_keys_and_indexes()
00163 {
00164 create_edge_primary_keys();
00165 create_edge_foreign_keys();
00166 create_edge_indexes();
00167 }
00168
00169 void OsmDatabase::drop_edge_primary_keys()
00170 {
00171 sqllib::get_drop_edges_pkey(db).execute();
00172 sqllib::get_drop_waynodes_pkey(db).execute();
00173 }
00174
00175 void OsmDatabase::drop_edge_foreign_keys()
00176 {
00177 sqllib::get_drop_waynodes_way_fkey(db).execute();
00178 sqllib::get_drop_waynodes_node_fkey(db).execute();
00179 sqllib::get_drop_edges_wayid_fkey(db).execute();
00180 sqllib::get_drop_edges_endnode_fkey(db).execute();
00181 sqllib::get_drop_edges_startnode_fkey(db).execute();
00182 }
00183
00184 void OsmDatabase::drop_edge_indexes()
00185 {
00186 sqllib::get_drop_edges_location_index(db).execute();
00187 }
00188
00189 void OsmDatabase::drop_edge_keys_and_indexes()
00190 {
00191 drop_edge_indexes();
00192 drop_edge_foreign_keys();
00193 drop_edge_primary_keys();
00194 }
00195
00196 }