GNUnet  0.10.x
Functions
sq_query_helper.c File Reference

helper functions for queries More...

#include "platform.h"
#include "gnunet_sq_lib.h"
Include dependency graph for sq_query_helper.c:

Go to the source code of this file.

Functions

static int bind_fixed_blob (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_fixed_size (const void *ptr, size_t ptr_size)
 Generate query parameter for a buffer ptr of ptr_size bytes. More...
 
static int bind_string (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_string (const char *ptr)
 Generate query parameter for a string. More...
 
static int bind_rsa_pub (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_rsa_public_key (const struct GNUNET_CRYPTO_RsaPublicKey *x)
 Generate query parameter for an RSA public key. More...
 
static int bind_rsa_sig (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_rsa_signature (const struct GNUNET_CRYPTO_RsaSignature *x)
 Generate query parameter for an RSA signature. More...
 
static int bind_abstime (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x)
 Generate query parameter for an absolute time value. More...
 
static int bind_nbotime (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_absolute_time_nbo (const struct GNUNET_TIME_AbsoluteNBO *x)
 Generate query parameter for an absolute time value. More...
 
static int bind_u16 (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint16 (const uint16_t *x)
 Generate query parameter for an uint16_t in host byte order. More...
 
static int bind_u32 (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint32 (const uint32_t *x)
 Generate query parameter for an uint32_t in host byte order. More...
 
static int bind_u64 (void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
 Function called to convert input argument into SQL parameters. More...
 
struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint64 (const uint64_t *x)
 Generate query parameter for an uint16_t in host byte order. More...
 

Detailed Description

helper functions for queries

Author
Christian Grothoff

Definition in file sq_query_helper.c.

Function Documentation

◆ bind_fixed_blob()

static int bind_fixed_blob ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 41 of file sq_query_helper.c.

References GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_fixed_size().

46 {
47  if (SQLITE_OK !=
48  sqlite3_bind_blob64(stmt,
49  (int)off,
50  data,
51  (sqlite3_uint64)data_len,
52  SQLITE_TRANSIENT))
53  return GNUNET_SYSERR;
54  return GNUNET_OK;
55 }
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_fixed_size()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_fixed_size ( const void *  ptr,
size_t  ptr_size 
)

Generate query parameter for a buffer ptr of ptr_size bytes.

Parameters
ptrpointer to the query parameter to pass ptr_size number of bytes in ptr

Definition at line 66 of file sq_query_helper.c.

References bind_fixed_blob(), GNUNET_SQ_QueryParam::conv, and GNUNET_SQ_QueryParam::size.

Referenced by namecache_sqlite_cache_block(), namestore_sqlite_store_records(), peerstore_sqlite_store_record(), sqlite_plugin_put(), and sqlite_plugin_remove_key().

68 {
69  struct GNUNET_SQ_QueryParam qp = {
71  .data = ptr,
72  .size = ptr_size,
73  .num_params = 1
74  };
75 
76  return qp;
77 }
static int bind_fixed_blob(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bind_string()

static int bind_string ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 92 of file sq_query_helper.c.

References GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_string().

97 {
98  if (NULL == data)
99  {
100  if (SQLITE_OK !=
101  sqlite3_bind_null(stmt,
102  (int)off))
103  return GNUNET_SYSERR;
104  return GNUNET_OK;
105  }
106  if (SQLITE_OK !=
107  sqlite3_bind_text(stmt,
108  (int)off,
109  (const char *)data,
110  -1,
111  SQLITE_TRANSIENT))
112  return GNUNET_SYSERR;
113  return GNUNET_OK;
114 }
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_string()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_string ( const char *  ptr)

Generate query parameter for a string.

Parameters
ptrpointer to the string query parameter to pass

Definition at line 123 of file sq_query_helper.c.

References bind_string(), GNUNET_SQ_QueryParam::conv, and GNUNET_SQ_QueryParam::num_params.

Referenced by namestore_sqlite_lookup_records(), namestore_sqlite_store_records(), peerstore_sqlite_delete_records(), peerstore_sqlite_iterate_records(), and peerstore_sqlite_store_record().

124 {
125  struct GNUNET_SQ_QueryParam qp = {
126  .conv = &bind_string,
127  .data = ptr,
128  .num_params = 1
129  };
130 
131  return qp;
132 }
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
static int bind_string(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bind_rsa_pub()

static int bind_rsa_pub ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 147 of file sq_query_helper.c.

References buf, data, GNUNET_break, GNUNET_CRYPTO_rsa_public_key_encode(), GNUNET_free, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_rsa_public_key().

152 {
153  const struct GNUNET_CRYPTO_RsaPublicKey *rsa = data;
154  char *buf;
155  size_t buf_size;
156 
157  GNUNET_break(NULL == cls);
159  &buf);
160  if (SQLITE_OK !=
161  sqlite3_bind_blob64(stmt,
162  (int)off,
163  buf,
164  (sqlite3_uint64)buf_size,
165  SQLITE_TRANSIENT))
166  {
167  GNUNET_free(buf);
168  return GNUNET_SYSERR;
169  }
170  GNUNET_free(buf);
171  return GNUNET_OK;
172 }
size_t GNUNET_CRYPTO_rsa_public_key_encode(const struct GNUNET_CRYPTO_RsaPublicKey *key, char **buffer)
Encode the public key in a format suitable for storing it into a file.
Definition: crypto_rsa.c:315
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
The public information of an RSA key pair.
Definition: crypto_rsa.c:50
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur...
static char buf[2048]
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_rsa_public_key()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_rsa_public_key ( const struct GNUNET_CRYPTO_RsaPublicKey x)

Generate query parameter for an RSA public key.

The database must contain a BLOB type in the respective position.

Parameters
xthe query parameter to pass.

Definition at line 182 of file sq_query_helper.c.

References bind_rsa_pub(), and GNUNET_SQ_QueryParam::conv.

183 {
184  struct GNUNET_SQ_QueryParam qp = {
185  .conv = &bind_rsa_pub,
186  .data = x,
187  .num_params = 1
188  };
189 
190  return qp;
191 }
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
static int bind_rsa_pub(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:

◆ bind_rsa_sig()

static int bind_rsa_sig ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 206 of file sq_query_helper.c.

References buf, data, GNUNET_break, GNUNET_CRYPTO_rsa_signature_encode(), GNUNET_free, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_rsa_signature().

211 {
212  const struct GNUNET_CRYPTO_RsaSignature *sig = data;
213  char *buf;
214  size_t buf_size;
215 
216  GNUNET_break(NULL == cls);
217  buf_size = GNUNET_CRYPTO_rsa_signature_encode(sig,
218  &buf);
219  if (SQLITE_OK !=
220  sqlite3_bind_blob64(stmt,
221  (int)off,
222  buf,
223  (sqlite3_uint64)buf_size,
224  SQLITE_TRANSIENT))
225  {
226  GNUNET_free(buf);
227  return GNUNET_SYSERR;
228  }
229  GNUNET_free(buf);
230  return GNUNET_OK;
231 }
an RSA signature
Definition: crypto_rsa.c:61
size_t GNUNET_CRYPTO_rsa_signature_encode(const struct GNUNET_CRYPTO_RsaSignature *sig, char **buffer)
Encode the given signature in a format suitable for storing it into a file.
Definition: crypto_rsa.c:965
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur...
static char buf[2048]
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_rsa_signature()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_rsa_signature ( const struct GNUNET_CRYPTO_RsaSignature x)

Generate query parameter for an RSA signature.

The database must contain a BLOB type in the respective position.

Parameters
xthe query parameter to pass

Definition at line 241 of file sq_query_helper.c.

References bind_rsa_sig(), and GNUNET_SQ_QueryParam::conv.

242 {
243  struct GNUNET_SQ_QueryParam qp = {
244  .conv = &bind_rsa_sig,
245  .data = x,
246  .num_params = 1
247  };
248 
249  return qp;
250 }
static int bind_rsa_sig(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:

◆ bind_abstime()

static int bind_abstime ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 265 of file sq_query_helper.c.

References GNUNET_TIME_Absolute::abs_value_us, data, GNUNET_assert, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_absolute_time().

270 {
271  const struct GNUNET_TIME_Absolute *u = data;
272  struct GNUNET_TIME_Absolute abs;
273 
274  abs = *u;
275  if (abs.abs_value_us > INT64_MAX)
276  abs.abs_value_us = INT64_MAX;
277  GNUNET_assert(sizeof(uint64_t) == data_len);
278  if (SQLITE_OK !=
279  sqlite3_bind_int64(stmt,
280  (int)off,
281  (sqlite3_int64)abs.abs_value_us))
282  return GNUNET_SYSERR;
283  return GNUNET_OK;
284 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
uint64_t abs_value_us
The actual value.
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
Time for absolute times used by GNUnet, in microseconds.
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_absolute_time()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_absolute_time ( const struct GNUNET_TIME_Absolute x)

Generate query parameter for an absolute time value.

The database must store a 64-bit integer.

Parameters
xpointer to the query parameter to pass

Definition at line 294 of file sq_query_helper.c.

References bind_abstime(), and GNUNET_SQ_QueryParam::conv.

Referenced by namecache_sqlite_cache_block(), namecache_sqlite_expire_blocks(), peerstore_sqlite_expire_records(), peerstore_sqlite_store_record(), sqlite_plugin_del(), sqlite_plugin_get(), sqlite_plugin_get_closest(), sqlite_plugin_get_expiration(), and sqlite_plugin_put().

295 {
296  struct GNUNET_SQ_QueryParam qp = {
297  .conv = &bind_abstime,
298  .data = x,
299  .size = sizeof(struct GNUNET_TIME_Absolute),
300  .num_params = 1
301  };
302 
303  return qp;
304 }
static int bind_abstime(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Time for absolute times used by GNUnet, in microseconds.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bind_nbotime()

static int bind_nbotime ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 319 of file sq_query_helper.c.

References data, GNUNET_assert, GNUNET_OK, GNUNET_SYSERR, and GNUNET_TIME_absolute_ntoh().

Referenced by GNUNET_SQ_query_param_absolute_time_nbo().

324 {
325  const struct GNUNET_TIME_AbsoluteNBO *u = data;
326  struct GNUNET_TIME_Absolute abs;
327 
328  abs = GNUNET_TIME_absolute_ntoh(*u);
329  if (abs.abs_value_us > INT64_MAX)
330  abs.abs_value_us = INT64_MAX;
331  GNUNET_assert(sizeof(uint64_t) == data_len);
332  if (SQLITE_OK !=
333  sqlite3_bind_int64(stmt,
334  (int)off,
335  (sqlite3_int64)abs.abs_value_us))
336  return GNUNET_SYSERR;
337  return GNUNET_OK;
338 }
struct GNUNET_TIME_Absolute GNUNET_TIME_absolute_ntoh(struct GNUNET_TIME_AbsoluteNBO a)
Convert absolute time from network byte order.
Definition: time.c:671
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
Time for absolute time used by GNUnet, in microseconds and in network byte order. ...
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
Time for absolute times used by GNUnet, in microseconds.
uint32_t data
The data value.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_absolute_time_nbo()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_absolute_time_nbo ( const struct GNUNET_TIME_AbsoluteNBO x)

Generate query parameter for an absolute time value.

The database must store a 64-bit integer.

Parameters
xpointer to the query parameter to pass

Definition at line 348 of file sq_query_helper.c.

References bind_nbotime(), and GNUNET_SQ_QueryParam::conv.

349 {
350  struct GNUNET_SQ_QueryParam qp = {
351  .conv = &bind_nbotime,
352  .data = x,
353  .size = sizeof(struct GNUNET_TIME_AbsoluteNBO),
354  .num_params = 1
355  };
356 
357  return qp;
358 }
Time for absolute time used by GNUnet, in microseconds and in network byte order. ...
static int bind_nbotime(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:

◆ bind_u16()

static int bind_u16 ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 373 of file sq_query_helper.c.

References data, GNUNET_assert, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_uint16().

378 {
379  const uint16_t *u = data;
380 
381  GNUNET_assert(sizeof(uint16_t) == data_len);
382  if (SQLITE_OK !=
383  sqlite3_bind_int(stmt,
384  (int)off,
385  (int)*u))
386  return GNUNET_SYSERR;
387  return GNUNET_OK;
388 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_uint16()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint16 ( const uint16_t *  x)

Generate query parameter for an uint16_t in host byte order.

Parameters
xpointer to the query parameter to pass

Definition at line 397 of file sq_query_helper.c.

References bind_u16(), GNUNET_SQ_QueryParam::conv, and GNUNET_SQ_QueryParam::num_params.

398 {
399  struct GNUNET_SQ_QueryParam qp = {
400  .conv = &bind_u16,
401  .data = x,
402  .size = sizeof(uint16_t),
403  .num_params = 1
404  };
405 
406  return qp;
407 }
static int bind_u16(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
unsigned int num_params
Number of parameters eaten by this operation.
Definition: gnunet_sq_lib.h:78
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:

◆ bind_u32()

static int bind_u32 ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 422 of file sq_query_helper.c.

References data, GNUNET_assert, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_uint32().

427 {
428  const uint32_t *u = data;
429 
430  GNUNET_assert(sizeof(uint32_t) == data_len);
431  if (SQLITE_OK !=
432  sqlite3_bind_int64(stmt,
433  (int)off,
434  (sqlite3_int64) * u))
435  return GNUNET_SYSERR;
436  return GNUNET_OK;
437 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_uint32()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint32 ( const uint32_t *  x)

Generate query parameter for an uint32_t in host byte order.

Parameters
xpointer to the query parameter to pass

Definition at line 445 of file sq_query_helper.c.

References bind_u32(), GNUNET_SQ_QueryParam::conv, and GNUNET_SQ_QueryParam::num_params.

Referenced by namestore_sqlite_store_records(), sqlite_plugin_get(), sqlite_plugin_get_closest(), sqlite_plugin_get_key(), sqlite_plugin_get_random(), sqlite_plugin_get_replication(), sqlite_plugin_get_zero_anonymity(), and sqlite_plugin_put().

446 {
447  struct GNUNET_SQ_QueryParam qp = {
448  .conv = &bind_u32,
449  .data = x,
450  .size = sizeof(uint32_t),
451  .num_params = 1
452  };
453 
454  return qp;
455 }
unsigned int num_params
Number of parameters eaten by this operation.
Definition: gnunet_sq_lib.h:78
static int bind_u32(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bind_u64()

static int bind_u64 ( void *  cls,
const void *  data,
size_t  data_len,
sqlite3_stmt *  stmt,
unsigned int  off 
)
static

Function called to convert input argument into SQL parameters.

Parameters
clsclosure
datapointer to input argument
data_lennumber of bytes in data (if applicable)
stmtsqlite statement to bind parameters for
offoffset of the argument to bind in stmt, numbered from 1, so immediately suitable for passing to sqlite3_bind-functions.
Returns
GNUNET_SYSERR on error, GNUNET_OK on success

Definition at line 470 of file sq_query_helper.c.

References data, GNUNET_assert, GNUNET_OK, and GNUNET_SYSERR.

Referenced by GNUNET_SQ_query_param_uint64().

475 {
476  const uint64_t *u = data;
477 
478  GNUNET_assert(sizeof(uint64_t) == data_len);
479  if (SQLITE_OK !=
480  sqlite3_bind_int64(stmt,
481  (int)off,
482  (sqlite3_int64) * u))
483  return GNUNET_SYSERR;
484  return GNUNET_OK;
485 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
uint32_t data
The data value.
Here is the caller graph for this function:

◆ GNUNET_SQ_query_param_uint64()

struct GNUNET_SQ_QueryParam GNUNET_SQ_query_param_uint64 ( const uint64_t *  x)

Generate query parameter for an uint16_t in host byte order.

Parameters
xpointer to the query parameter to pass

Definition at line 494 of file sq_query_helper.c.

References bind_u64(), GNUNET_SQ_QueryParam::conv, and GNUNET_SQ_QueryParam::num_params.

Referenced by delete_by_rowid(), namestore_sqlite_iterate_records(), namestore_sqlite_store_records(), sqlite_plugin_del(), sqlite_plugin_get_key(), sqlite_plugin_get_replication(), sqlite_plugin_get_zero_anonymity(), and sqlite_plugin_put().

495 {
496  struct GNUNET_SQ_QueryParam qp = {
497  .conv = &bind_u64,
498  .data = x,
499  .size = sizeof(uint64_t),
500  .num_params = 1
501  };
502 
503  return qp;
504 }
unsigned int num_params
Number of parameters eaten by this operation.
Definition: gnunet_sq_lib.h:78
static int bind_u64(void *cls, const void *data, size_t data_len, sqlite3_stmt *stmt, unsigned int off)
Function called to convert input argument into SQL parameters.
Description of a DB query parameter.
Definition: gnunet_sq_lib.h:54
GNUNET_SQ_QueryConverter conv
Function for how to handle this type of entry.
Definition: gnunet_sq_lib.h:58
Here is the call graph for this function:
Here is the caller graph for this function: