2 * This file is part of mapper
4 * Copyright (C) 2007 Kaj-Michael Lang
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 #include "osm-sql-tables.h"
30 gchar *_mapper_db=NULL;
33 db_create_tables(sqlite3 *db)
35 sqlite3_exec(db, OSM_TABLE_NODES,NULL, NULL, NULL);
36 sqlite3_exec(db, OSM_TABLE_NODE_TAGS,NULL, NULL, NULL);
37 sqlite3_exec(db, OSM_TABLE_WAY,NULL, NULL, NULL);
38 sqlite3_exec(db, OSM_TABLE_WAY_TAGS,NULL, NULL, NULL);
39 sqlite3_exec(db, OSM_TABLE_WAY_UPDATES,NULL, NULL, NULL);
40 sqlite3_exec(db, OSM_TABLE_WAY_N2N,NULL, NULL, NULL);
41 sqlite3_exec(db, OSM_TABLE_WAY_NAMES,NULL, NULL, NULL);
42 sqlite3_exec(db, OSM_TABLE_WAY_PC,NULL, NULL, NULL);
43 sqlite3_exec(db, OSM_TABLE_WAY_NAMES_NLS,NULL, NULL, NULL);
44 sqlite3_exec(db, OSM_TABLE_WAY_REF,NULL, NULL, NULL);
45 sqlite3_exec(db, OSM_TABLE_PLACES,NULL, NULL, NULL);
46 sqlite3_exec(db, OSM_TABLE_POI,NULL, NULL, NULL);
47 sqlite3_exec(db, OSM_TABLE_POI_CATEGORY,NULL, NULL, NULL);
51 db_create_indexes(sqlite3 *db)
53 sqlite3_exec(db, OSM_INDEX_1, NULL, NULL, NULL);
54 sqlite3_exec(db, OSM_INDEX_2, NULL, NULL, NULL);
55 sqlite3_exec(db, OSM_INDEX_3, NULL, NULL, NULL);
56 sqlite3_exec(db, OSM_INDEX_4, NULL, NULL, NULL);
57 sqlite3_exec(db, OSM_INDEX_5, NULL, NULL, NULL);
58 sqlite3_exec(db, OSM_INDEX_6, NULL, NULL, NULL);
59 sqlite3_exec(db, OSM_INDEX_7, NULL, NULL, NULL);
60 sqlite3_exec(db, OSM_INDEX_8, NULL, NULL, NULL);
61 sqlite3_exec(db, OSM_INDEX_9, NULL, NULL, NULL);
62 sqlite3_exec(db, OSM_INDEX_10, NULL, NULL, NULL);
63 sqlite3_exec(db, OSM_INDEX_11, NULL, NULL, NULL);
64 sqlite3_exec(db, OSM_INDEX_12, NULL, NULL, NULL);
65 sqlite3_exec(db, OSM_INDEX_13, NULL, NULL, NULL);
66 sqlite3_exec(db, OSM_INDEX_14, NULL, NULL, NULL);
67 sqlite3_exec(db, OSM_INDEX_15, NULL, NULL, NULL);
71 * A simple check to test if a table exists
75 db_check(sqlite3 *db, const gchar *table)
81 g_snprintf(sql, sizeof(sql),"select count(*) from %s", table);
83 if (SQLITE_OK != sqlite3_get_table(db, sql, &pszResult, &nRow, &nColumn, NULL))
86 sqlite3_free_table(pszResult);
91 * Helper that execs a given prepared sql statment and resets clears bindings.
92 * return TRUE or FALSE depending on success of the query.
96 db_exec(sqlite3_stmt *sql)
102 sqlite3_clear_bindings(sql);
104 return (r==SQLITE_OK) ? TRUE : FALSE;
108 * Close the database connection
112 db_close(sqlite3 **db)
115 g_print("Closing database.\n");
123 * Connect to given sqlite database
127 db_connect(sqlite3 **db, const gchar *mapper_db)
137 if (SQLITE_OK!=(sqlite3_open(mapper_db, db))) {
143 /* Use smaller cache as the IT does not have much memory to spare */
144 #ifdef WITH_DEVICE_770
145 sqlite3_exec(*db, "PRAGMA cache_size = 1000;", NULL, NULL, NULL);
147 sqlite3_exec(*db, "PRAGMA cache_size = 8000;", NULL, NULL, NULL);