21 static int cmp(
const void *pa,
const void *pb)
33 static int cmpcat(
const void *pa,
const void *pb)
45 static int cmpcatkey(
const void *pa,
const void *pb)
57 static int cmpvalueint(
const void *pa,
const void *pb)
70 static int cmpvaluedouble(
const void *pa,
const void *pb)
83 static int cmpvaluestring(
const void *pa,
const void *pb)
88 return strcmp((
const char *)a, (
const char *)b);
104 const char *where,
int **pval)
106 int type, more, alloc,
count;
118 if (col ==
NULL || strlen(col) == 0) {
125 val = (
int *)
G_malloc(alloc *
sizeof(
int));
127 if (where ==
NULL || strlen(where) == 0)
128 G_asprintf(&buf,
"SELECT %s FROM %s", col, tab);
130 G_asprintf(&buf,
"SELECT %s FROM %s WHERE %s", col, tab, where);
143 if (column ==
NULL) {
159 if (count == alloc) {
161 val = (
int *)
G_realloc(val, alloc *
sizeof(
int));
170 val[
count] = atoi(sval);
184 qsort((
void *)val, count,
sizeof(
int), cmp);
205 int id,
const char *col,
dbValue * val)
215 if (key ==
NULL || strlen(key) == 0) {
220 if (col ==
NULL || strlen(col) == 0) {
226 G_asprintf(&buf,
"SELECT %s FROM %s WHERE %s = %d", col, tab, key,
id);
269 const char *col,
const char *where,
272 int i, type, more, nrows, ncols;
280 G_debug(3,
"db_select_CatValArray ()");
282 if (key ==
NULL || strlen(key) == 0) {
287 if (col ==
NULL || strlen(col) == 0) {
293 if (strcmp(key, col) == 0) {
295 G_asprintf(&buf,
"SELECT %s FROM %s", key, tab);
299 G_asprintf(&buf,
"SELECT %s, %s FROM %s", key, col, tab);
304 if (where !=
NULL && strlen(where) > 0) {
315 G_debug(3,
" %d rows selected", nrows);
317 G_warning(
_(
"Unable select records from table <%s>"), tab);
330 G_debug(3,
" key type = %d", type);
333 G_warning(
_(
"Key column type is not integer"));
342 G_debug(3,
" col type = %d", type);
353 for (i = 0; i < nrows; i++) {
432 switch (arr->
ctype) {
473 if (catval ==
NULL) {
499 if (catval ==
NULL) {
503 *val = catval->
val.
i;
522 G_debug(3,
"db_CatValArray_get_value_double(), key = %d", key);
527 if (catval ==
NULL) {
531 *val = catval->
val.
d;
int db_select_CatValArray(dbDriver *driver, const char *tab, const char *key, const char *col, const char *where, dbCatValArray *cvarr)
Select pairs key/value to array, values are sorted by key (must be integer)
dbValue * db_get_column_value(dbColumn *)
Returns column value for given column structure.
void db_CatValArray_sort(dbCatValArray *arr)
Sort key/value array by key.
int db_CatValArray_get_value_int(dbCatValArray *arr, int key, int *val)
Find value (integer) by key.
struct _db_date_time dbDateTime
void db_copy_value(dbValue *, dbValue *)
Copy value.
int db_select_value(dbDriver *driver, const char *tab, const char *key, int id, const char *col, dbValue *val)
Select one (first) value from table/column for key/id.
void db_init_string(dbString *)
Initialize dbString.
int db_fetch(dbCursor *, int, int *)
Fetch data from open cursor.
int db_open_select_cursor(dbDriver *, dbString *, dbCursor *, int)
Open select cursor.
char * db_get_string(const dbString *)
Get string.
#define DB_C_TYPE_DATETIME
void G_free(void *)
Free allocated memory.
int db_get_value_int(dbValue *)
Get integer value.
int db_CatValArray_alloc(dbCatValArray *, int)
Allocate dbCatValArray.
int db_set_string(dbString *, const char *)
Inserts string to dbString (enlarge string)
int db_select_int(dbDriver *driver, const char *tab, const char *col, const char *where, int **pval)
Select array of ordered integers from table/column.
int db_CatValArray_get_value_double(dbCatValArray *arr, int key, double *val)
Find value (double) by key.
int db_get_column_sqltype(dbColumn *)
Returns column sqltype for column.
int db_append_string(dbString *, const char *)
Append string to dbString.
int db_get_num_rows(dbCursor *)
Get number of selected rows.
int db_sqltype_to_Ctype(int)
Get C data type based on given SQL data type.
const char * db_get_value_string(dbValue *)
Get string value.
double db_get_value_double(dbValue *)
Get double precision value.
void G_zero(void *, int)
Zero out a buffer, buf, of length i.
void G_warning(const char *,...) __attribute__((format(printf
int db_CatValArray_sort_by_value(dbCatValArray *arr)
Sort key/value array by value.
dbColumn * db_get_table_column(dbTable *, int)
Returns column structure for given table and column number.
int G_asprintf(char **, const char *,...) __attribute__((format(printf
dbTable * db_get_cursor_table(dbCursor *)
Get table allocated by cursor.
int db_CatValArray_get_value(dbCatValArray *arr, int key, dbCatVal **cv)
Find value by key.
int G_debug(int, const char *,...) __attribute__((format(printf
void db_free_string(dbString *)
Free allocated space for dbString.
int db_close_cursor(dbCursor *)
Close cursor.