GRASS 8 Programmer's Manual 8.6.0dev(2026)-55de52a352
Loading...
Searching...
No Matches
dbmi.h
Go to the documentation of this file.
1/*!
2 \file include/grass/dbmi.h
3
4 \brief Main header of \ref dbmilib
5
6 SPDX-FileCopyrightText: 1999-2009, 2011 GRASS Development Team
7 SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10#ifndef GRASS_DBMI_H
11#define GRASS_DBMI_H
12
13#include <stdio.h>
14#include <grass/gis.h>
15
16#define DB_VERSION "0"
17
18#ifdef HAVE_SQLITE
19#define DB_DEFAULT_DRIVER "sqlite"
20#else
21#define DB_DEFAULT_DRIVER "dbf"
22#endif
23
24/* DB Prodedure Numbers */
25#define DB_PROC_VERSION 999
26
27#define DB_PROC_CLOSE_DATABASE 101
28#define DB_PROC_CREATE_DATABASE 102
29#define DB_PROC_DELETE_DATABASE 103
30#define DB_PROC_FIND_DATABASE 104
31#define DB_PROC_LIST_DATABASES 105
32#define DB_PROC_OPEN_DATABASE 106
33#define DB_PROC_SHUTDOWN_DRIVER 107
34
35#define DB_PROC_CLOSE_CURSOR 201
36#define DB_PROC_DELETE 202
37#define DB_PROC_FETCH 203
38#define DB_PROC_INSERT 204
39#define DB_PROC_OPEN_INSERT_CURSOR 205
40#define DB_PROC_OPEN_SELECT_CURSOR 206
41#define DB_PROC_OPEN_UPDATE_CURSOR 207
42#define DB_PROC_UPDATE 208
43#define DB_PROC_ROWS 209
44#define DB_PROC_BIND_UPDATE 220
45#define DB_PROC_BIND_INSERT 221
46
47#define DB_PROC_EXECUTE_IMMEDIATE 301
48#define DB_PROC_BEGIN_TRANSACTION 302
49#define DB_PROC_COMMIT_TRANSACTION 303
50
51#define DB_PROC_CREATE_TABLE 401
52#define DB_PROC_DESCRIBE_TABLE 402
53#define DB_PROC_DROP_TABLE 403
54#define DB_PROC_LIST_TABLES 404
55#define DB_PROC_ADD_COLUMN 405
56#define DB_PROC_DROP_COLUMN 406
57#define DB_PROC_GRANT_ON_TABLE 407
58
59#define DB_PROC_CREATE_INDEX 701
60#define DB_PROC_LIST_INDEXES 702
61#define DB_PROC_DROP_INDEX 703
62
63/* Unix file permissions */
64#define DB_PERM_R 01
65#define DB_PERM_W 02
66#define DB_PERM_X 04
67
68/* DB Error codes */
69#define DB_OK 0
70#define DB_FAILED 1
71#define DB_NOPROC 2
72#define DB_MEMORY_ERR -1
73#define DB_PROTOCOL_ERR -2
74#define DB_EOF -1
75
76/* dbColumn.sqlDataType */
77#define DB_SQL_TYPE_UNKNOWN 0
78
79#define DB_SQL_TYPE_CHARACTER 1
80#define DB_SQL_TYPE_SMALLINT 2
81#define DB_SQL_TYPE_INTEGER 3
82#define DB_SQL_TYPE_REAL 4
83#define DB_SQL_TYPE_DOUBLE_PRECISION 6
84#define DB_SQL_TYPE_DECIMAL 7
85#define DB_SQL_TYPE_NUMERIC 8
86#define DB_SQL_TYPE_DATE 9
87#define DB_SQL_TYPE_TIME 10
88#define DB_SQL_TYPE_TIMESTAMP 11
89#define DB_SQL_TYPE_INTERVAL 12
90#define DB_SQL_TYPE_TEXT 13 /* length not defined */
91
92#define DB_SQL_TYPE_SERIAL 21
93
94/* these are OR'ed (|) with the TIMESTAMP and INTERVAL type */
95#define DB_YEAR 0x4000
96#define DB_MONTH 0x2000
97#define DB_DAY 0x1000
98#define DB_HOUR 0x0800
99#define DB_MINUTE 0x0400
100#define DB_SECOND 0x0200
101#define DB_FRACTION 0x0100
102#define DB_DATETIME_MASK 0xFF00
103
104/* dbColumn.CDataType */
105#define DB_C_TYPE_STRING 1
106#define DB_C_TYPE_INT 2
107#define DB_C_TYPE_DOUBLE 3
108#define DB_C_TYPE_DATETIME 4
109
110/* fetch positions */
111#define DB_CURRENT 1
112#define DB_NEXT 2
113#define DB_PREVIOUS 3
114#define DB_FIRST 4
115#define DB_LAST 5
116
117/* cursor modes/types */
118#define DB_READONLY 1
119#define DB_INSERT 2
120#define DB_UPDATE 3
121#define DB_SEQUENTIAL 0
122#define DB_SCROLL 1
123#define DB_INSENSITIVE 4
124
125/* privilege modes */
126#define DB_GRANTED 1
127#define DB_NOT_GRANTED -1
128
129/* Privileges */
130#define DB_PRIV_SELECT 0x01
131
132#define DB_GROUP 0x01
133#define DB_PUBLIC 0x02
134
135/* default value modes */
136#define DB_DEFINED 1
137#define DB_UNDEFINED 2
138
139/* static buffer for SQL statements */
140#define DB_SQL_MAX 65536
141
142typedef void *dbAddress;
143typedef int dbToken;
144
145typedef struct _db_string {
146 char *string;
149
150typedef struct _dbmscap {
151 char driverName[256]; /* symbolic name for the dbms system */
152 char startup[256]; /* command to run the driver */
153 char comment[256]; /* comment field */
154 struct _dbmscap *next; /* linked list */
156
157typedef struct _db_dirent {
158 dbString name; /* file/dir name */
159 int isdir; /* bool: name is a directory */
160 int perm; /* permissions */
162
163typedef struct _db_driver {
164 dbDbmscap dbmscap; /* dbmscap entry for this driver */
165 FILE *send, *recv; /* i/o to-from driver */
166 int pid; /* process id of the driver */
168
169typedef struct _db_handle {
170 dbString dbName; /* database name */
171 /* dbString dbPath; */ /* directory containing dbName */
172 dbString dbSchema; /* database schema */
174
175typedef struct _db_date_time {
177 int year;
178 int month;
179 int day;
180 int hour;
182 double seconds;
184
185typedef struct _db_value {
186 char isNull;
187 int i;
188 double d;
192
209
218
227
235
243
244/* category value (integer) */
245typedef struct {
246 int cat; /* category */
247 int val; /* value */
248} dbCatValI;
249
250/* category value */
251typedef struct {
252 int cat; /* category */
254 union {
255 int i;
256 double d;
257 /* s and t were added 22.8.2005, both are pointers,
258 * they so should not take more than 8 bytes.
259 * It would be better to add dbString, not pointer,
260 * But it could be > 8 bytes on some systems */
263 } val;
264} dbCatVal;
265
266/* category value array */
267typedef struct {
269 int alloc;
270 int ctype; /* C type of values stored in array DB_C_TYPE_* */
273
274/* parameters of connection */
275typedef struct _db_connection {
277 char *hostName;
280 char *port;
281 char *user;
282 char *password;
283 char *keycol; /* name of default key column */
284 char *group; /* default group to which select privilege is granted */
286
287/* reclass rule */
288typedef struct {
289 int count; /* number of defined rules */
290 int alloc; /* size of allocated array */
291 char *table; /* table name */
292 char *key; /* key column name */
293 int *cat; /* array of new category numbers */
294 char **where; /* array of SQL WHERE conditions */
295 char **label; /* array of new category labels */
296} dbRclsRule;
297
298#include <grass/defs/dbmi.h>
299
300#endif
struct _db_date_time dbDateTime
struct _db_index dbIndex
struct _db_cursor dbCursor
struct _db_column dbColumn
int dbToken
Definition dbmi.h:143
struct _db_table dbTable
struct _db_driver dbDriver
struct _db_value dbValue
struct _db_connection dbConnection
struct _db_dirent dbDirent
struct _db_string dbString
struct _db_handle dbHandle
struct _db_driver_state dbDriverState
struct _dbmscap dbDbmscap
void * dbAddress
Definition dbmi.h:142
char nullAllowed
Definition dbmi.h:202
char hasDefaultValue
Definition dbmi.h:203
int select
Definition dbmi.h:206
int update
Definition dbmi.h:207
dbValue defaultValue
Definition dbmi.h:205
int precision
Definition dbmi.h:200
dbValue value
Definition dbmi.h:198
char useDefaultValue
Definition dbmi.h:204
dbString columnName
Definition dbmi.h:194
int hostDataType
Definition dbmi.h:197
int dataLen
Definition dbmi.h:199
int scale
Definition dbmi.h:201
dbString description
Definition dbmi.h:195
int sqlDataType
Definition dbmi.h:196
char * password
Definition dbmi.h:282
char * hostName
Definition dbmi.h:277
char * schemaName
Definition dbmi.h:279
char * port
Definition dbmi.h:280
char * group
Definition dbmi.h:284
char * user
Definition dbmi.h:281
char * databaseName
Definition dbmi.h:278
char * keycol
Definition dbmi.h:283
char * driverName
Definition dbmi.h:276
short * column_flags
Definition dbmi.h:223
dbDriver * driver
Definition dbmi.h:221
int mode
Definition dbmi.h:225
dbTable * table
Definition dbmi.h:222
int type
Definition dbmi.h:224
dbToken token
Definition dbmi.h:220
int minute
Definition dbmi.h:181
double seconds
Definition dbmi.h:182
int month
Definition dbmi.h:178
char current
Definition dbmi.h:176
dbString name
Definition dbmi.h:158
int perm
Definition dbmi.h:160
int isdir
Definition dbmi.h:159
dbCursor ** cursor_list
Definition dbmi.h:241
char * dbname
Definition dbmi.h:237
char * dbschema
Definition dbmi.h:238
int pid
Definition dbmi.h:166
FILE * recv
Definition dbmi.h:165
dbDbmscap dbmscap
Definition dbmi.h:164
FILE * send
Definition dbmi.h:165
dbString dbSchema
Definition dbmi.h:172
dbString dbName
Definition dbmi.h:170
dbString * columnNames
Definition dbmi.h:232
int numColumns
Definition dbmi.h:231
dbString indexName
Definition dbmi.h:229
dbString tableName
Definition dbmi.h:230
char unique
Definition dbmi.h:233
int nalloc
Definition dbmi.h:147
char * string
Definition dbmi.h:146
dbString tableName
Definition dbmi.h:211
int priv_insert
Definition dbmi.h:215
int priv_delete
Definition dbmi.h:216
int numColumns
Definition dbmi.h:213
dbString description
Definition dbmi.h:212
dbColumn * columns
Definition dbmi.h:214
dbString s
Definition dbmi.h:189
dbDateTime t
Definition dbmi.h:190
char isNull
Definition dbmi.h:186
double d
Definition dbmi.h:188
int i
Definition dbmi.h:187
char comment[256]
Definition dbmi.h:153
char startup[256]
Definition dbmi.h:152
char driverName[256]
Definition dbmi.h:151
struct _dbmscap * next
Definition dbmi.h:154
int alloc
Definition dbmi.h:269
int ctype
Definition dbmi.h:270
int n_values
Definition dbmi.h:268
dbCatVal * value
Definition dbmi.h:271
int cat
Definition dbmi.h:246
int val
Definition dbmi.h:247
dbDateTime * t
Definition dbmi.h:262
int isNull
Definition dbmi.h:253
int cat
Definition dbmi.h:252
int i
Definition dbmi.h:255
dbString * s
Definition dbmi.h:261
double d
Definition dbmi.h:256
int count
Definition dbmi.h:289
char ** label
Definition dbmi.h:295
char ** where
Definition dbmi.h:294
int alloc
Definition dbmi.h:290
char * table
Definition dbmi.h:291
char * key
Definition dbmi.h:292
int * cat
Definition dbmi.h:293