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);
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);
270 const char *col,
const char *where,
273 int i, type, more, nrows, ncols;
281 G_debug(3,
"db_select_CatValArray ()");
283 if (key ==
NULL || strlen(key) == 0) {
288 if (col ==
NULL || strlen(col) == 0) {
294 if (strcmp(key, col) == 0) {
296 G_asprintf(&buf,
"SELECT %s FROM %s", key, tab);
300 G_asprintf(&buf,
"SELECT %s, %s FROM %s", key, col, tab);
305 if (where !=
NULL && strlen(where) > 0) {
316 G_debug(3,
" %d rows selected", nrows);
318 G_warning(
_(
"Unable select records from table <%s>"), tab);
331 G_debug(3,
" key type = %d", type);
334 G_warning(
_(
"Key column type is not integer"));
343 G_debug(3,
" col type = %d", type);
355 for (i = 0; i < nrows; i++) {
432 switch (arr->
ctype) {
471 if (catval ==
NULL) {
496 if (catval ==
NULL) {
500 *val = catval->
val.
i;
519 G_debug(3,
"db_CatValArray_get_value_double(), key = %d", key);
523 if (catval ==
NULL) {
527 *val = catval->
val.
d;
int db_CatValArray_get_value_double(dbCatValArray *arr, int key, double *val)
Find value (double) by key.
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)
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_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.
int db_CatValArray_get_value_int(dbCatValArray *arr, int key, int *val)
Find value (integer) by key.
void db_CatValArray_sort(dbCatValArray *arr)
Sort key/value array by key.
int db_CatValArray_sort_by_value(dbCatValArray *arr)
Sort key/value array by value.
int db_CatValArray_get_value(dbCatValArray *arr, int key, dbCatVal **cv)
Find value by key.
struct _db_date_time dbDateTime
#define DB_C_TYPE_DATETIME
void db_copy_value(dbValue *, dbValue *)
Copy value.
const char * db_get_value_string(dbValue *)
Get string value.
dbValue * db_get_column_value(dbColumn *)
Returns column value for given column structure.
dbColumn * db_get_table_column(dbTable *, int)
Returns column structure for given table and column number.
int db_CatValArray_alloc(dbCatValArray *, int)
Allocate dbCatValArray.
double db_get_value_double(dbValue *)
Get double precision value.
int db_sqltype_to_Ctype(int)
Get C data type based on given SQL data type.
int db_get_column_sqltype(dbColumn *)
Returns column sqltype for column.
int db_get_num_rows(dbCursor *)
Get number of selected rows.
dbTable * db_get_cursor_table(dbCursor *)
Get table allocated by cursor.
void db_free_string(dbString *)
Free allocated space for dbString.
int db_set_string(dbString *, const char *)
Inserts string to dbString (enlarge string)
int db_get_value_int(dbValue *)
Get integer value.
void db_init_string(dbString *)
Initialize dbString.
int db_close_cursor(dbCursor *)
Close cursor.
int db_open_select_cursor(dbDriver *, dbString *, dbCursor *, int)
Open select cursor.
int db_append_string(dbString *, const char *)
Append string to dbString.
char * db_get_string(const dbString *)
Get string.
int db_fetch(dbCursor *, int, int *)
Fetch data from open cursor.
void G_zero(void *, int)
Zero out a buffer, buf, of length i.
void G_free(void *)
Free allocated memory.
void G_warning(const char *,...) __attribute__((format(printf
int G_asprintf(char **, const char *,...) __attribute__((format(printf
int G_debug(int, const char *,...) __attribute__((format(printf