Apache Portable Runtime Utility Library
apr_dbd.h
Go to the documentation of this file.
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /* Overview of what this is and does:
18  * http://www.apache.org/~niq/dbd.html
19  */
20 
21 #ifndef APR_DBD_H
22 #define APR_DBD_H
23 
24 #include "apu.h"
25 #include "apr_pools.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
55 typedef enum {
56  APR_DBD_TYPE_NONE,
80 
81 /* These are opaque structs. Instantiation is up to each backend */
82 typedef struct apr_dbd_driver_t apr_dbd_driver_t;
83 typedef struct apr_dbd_t apr_dbd_t;
84 typedef struct apr_dbd_transaction_t apr_dbd_transaction_t;
85 typedef struct apr_dbd_results_t apr_dbd_results_t;
86 typedef struct apr_dbd_row_t apr_dbd_row_t;
87 typedef struct apr_dbd_prepared_t apr_dbd_prepared_t;
88 
93 APU_DECLARE(apr_status_t) apr_dbd_init(apr_pool_t *pool);
94 
105 APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name,
106  const apr_dbd_driver_t **driver);
107 
140 APU_DECLARE(apr_status_t) apr_dbd_open_ex(const apr_dbd_driver_t *driver,
141  apr_pool_t *pool, const char *params,
142  apr_dbd_t **handle,
143  const char **error);
144 
155 APU_DECLARE(apr_status_t) apr_dbd_open(const apr_dbd_driver_t *driver,
156  apr_pool_t *pool, const char *params,
157  apr_dbd_t **handle);
158 
165 APU_DECLARE(apr_status_t) apr_dbd_close(const apr_dbd_driver_t *driver,
166  apr_dbd_t *handle);
167 
168 /* apr-function-shaped versions of things */
169 
175 APU_DECLARE(const char*) apr_dbd_name(const apr_dbd_driver_t *driver);
176 
183 APU_DECLARE(void*) apr_dbd_native_handle(const apr_dbd_driver_t *driver,
184  apr_dbd_t *handle);
185 
193 APU_DECLARE(int) apr_dbd_check_conn(const apr_dbd_driver_t *driver, apr_pool_t *pool,
194  apr_dbd_t *handle);
195 
204 APU_DECLARE(int) apr_dbd_set_dbname(const apr_dbd_driver_t *driver, apr_pool_t *pool,
205  apr_dbd_t *handle, const char *name);
206 
221 APU_DECLARE(int) apr_dbd_transaction_start(const apr_dbd_driver_t *driver,
222  apr_pool_t *pool,
223  apr_dbd_t *handle,
224  apr_dbd_transaction_t **trans);
225 
235 APU_DECLARE(int) apr_dbd_transaction_end(const apr_dbd_driver_t *driver,
236  apr_pool_t *pool,
237  apr_dbd_transaction_t *trans);
238 
239 #define APR_DBD_TRANSACTION_COMMIT 0x00
240 #define APR_DBD_TRANSACTION_ROLLBACK 0x01
241 #define APR_DBD_TRANSACTION_IGNORE_ERRORS 0x02
249 APU_DECLARE(int) apr_dbd_transaction_mode_get(const apr_dbd_driver_t *driver,
250  apr_dbd_transaction_t *trans);
251 
259 APU_DECLARE(int) apr_dbd_transaction_mode_set(const apr_dbd_driver_t *driver,
260  apr_dbd_transaction_t *trans,
261  int mode);
262 
271 APU_DECLARE(int) apr_dbd_query(const apr_dbd_driver_t *driver, apr_dbd_t *handle,
272  int *nrows, const char *statement);
273 
286 APU_DECLARE(int) apr_dbd_select(const apr_dbd_driver_t *driver, apr_pool_t *pool,
287  apr_dbd_t *handle, apr_dbd_results_t **res,
288  const char *statement, int random);
289 
296 APU_DECLARE(int) apr_dbd_num_cols(const apr_dbd_driver_t *driver,
297  apr_dbd_results_t *res);
298 
306 APU_DECLARE(int) apr_dbd_num_tuples(const apr_dbd_driver_t *driver,
307  apr_dbd_results_t *res);
308 
319 APU_DECLARE(int) apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool,
320  apr_dbd_results_t *res, apr_dbd_row_t **row,
321  int rownum);
322 
330 APU_DECLARE(const char*) apr_dbd_get_entry(const apr_dbd_driver_t *driver,
331  apr_dbd_row_t *row, int col);
332 
340 APU_DECLARE(const char*) apr_dbd_get_name(const apr_dbd_driver_t *driver,
341  apr_dbd_results_t *res, int col);
342 
343 
352 APU_DECLARE(const char*) apr_dbd_error(const apr_dbd_driver_t *driver,
353  apr_dbd_t *handle, int errnum);
354 
363 APU_DECLARE(const char*) apr_dbd_escape(const apr_dbd_driver_t *driver,
364  apr_pool_t *pool, const char *string,
365  apr_dbd_t *handle);
366 
395 APU_DECLARE(int) apr_dbd_prepare(const apr_dbd_driver_t *driver, apr_pool_t *pool,
396  apr_dbd_t *handle, const char *query,
397  const char *label,
398  apr_dbd_prepared_t **statement);
399 
400 
412 APU_DECLARE(int) apr_dbd_pquery(const apr_dbd_driver_t *driver, apr_pool_t *pool,
413  apr_dbd_t *handle, int *nrows,
414  apr_dbd_prepared_t *statement, int nargs,
415  const char **args);
416 
429 APU_DECLARE(int) apr_dbd_pselect(const apr_dbd_driver_t *driver, apr_pool_t *pool,
430  apr_dbd_t *handle, apr_dbd_results_t **res,
431  apr_dbd_prepared_t *statement, int random,
432  int nargs, const char **args);
433 
444 APU_DECLARE_NONSTD(int) apr_dbd_pvquery(const apr_dbd_driver_t *driver,
445  apr_pool_t *pool,
446  apr_dbd_t *handle, int *nrows,
447  apr_dbd_prepared_t *statement, ...);
448 
460 APU_DECLARE_NONSTD(int) apr_dbd_pvselect(const apr_dbd_driver_t *driver,
461  apr_pool_t *pool, apr_dbd_t *handle,
462  apr_dbd_results_t **res,
463  apr_dbd_prepared_t *statement,
464  int random, ...);
465 
476 APU_DECLARE(int) apr_dbd_pbquery(const apr_dbd_driver_t *driver,
477  apr_pool_t *pool, apr_dbd_t *handle,
478  int *nrows, apr_dbd_prepared_t *statement,
479  const void **args);
480 
492 APU_DECLARE(int) apr_dbd_pbselect(const apr_dbd_driver_t *driver,
493  apr_pool_t *pool,
494  apr_dbd_t *handle, apr_dbd_results_t **res,
495  apr_dbd_prepared_t *statement, int random,
496  const void **args);
497 
508 APU_DECLARE_NONSTD(int) apr_dbd_pvbquery(const apr_dbd_driver_t *driver,
509  apr_pool_t *pool,
510  apr_dbd_t *handle, int *nrows,
511  apr_dbd_prepared_t *statement, ...);
512 
524 APU_DECLARE_NONSTD(int) apr_dbd_pvbselect(const apr_dbd_driver_t *driver,
525  apr_pool_t *pool, apr_dbd_t *handle,
526  apr_dbd_results_t **res,
527  apr_dbd_prepared_t *statement,
528  int random, ...);
529 
539 APU_DECLARE(apr_status_t) apr_dbd_datum_get(const apr_dbd_driver_t *driver,
540  apr_dbd_row_t *row, int col,
541  apr_dbd_type_e type, void *data);
542 
545 #ifdef __cplusplus
546 }
547 #endif
548 
549 #endif
apr_dbd_pvselect
int apr_dbd_pvselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...)
apr_dbd_name
const char * apr_dbd_name(const apr_dbd_driver_t *driver)
apr_dbd_num_tuples
int apr_dbd_num_tuples(const apr_dbd_driver_t *driver, apr_dbd_results_t *res)
apr_dbd_transaction_mode_set
int apr_dbd_transaction_mode_set(const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans, int mode)
apr_dbd_pbselect
int apr_dbd_pbselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, const void **args)
APR_DBD_TYPE_DATETIME
@ APR_DBD_TYPE_DATETIME
Definition: apr_dbd.h:73
apr_dbd_set_dbname
int apr_dbd_set_dbname(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *name)
APR_DBD_TYPE_CLOB
@ APR_DBD_TYPE_CLOB
Definition: apr_dbd.h:77
APR_DBD_TYPE_BLOB
@ APR_DBD_TYPE_BLOB
Definition: apr_dbd.h:76
apr_dbd_get_row
int apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum)
apr_dbd_select
int apr_dbd_select(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, const char *statement, int random)
apr_dbd_pbquery
int apr_dbd_pbquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, const void **args)
apr_dbd_query
int apr_dbd_query(const apr_dbd_driver_t *driver, apr_dbd_t *handle, int *nrows, const char *statement)
APR_DBD_TYPE_STRING
@ APR_DBD_TYPE_STRING
Definition: apr_dbd.h:69
apr_dbd_pvbselect
int apr_dbd_pvbselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...)
apr_dbd_driver_t
Definition: apr_dbd_internal.h:43
APR_DBD_TYPE_DOUBLE
@ APR_DBD_TYPE_DOUBLE
Definition: apr_dbd.h:68
apr_dbd_escape
const char * apr_dbd_escape(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *string, apr_dbd_t *handle)
APR_DBD_TYPE_LONG
@ APR_DBD_TYPE_LONG
Definition: apr_dbd.h:63
apr_dbd_get_name
const char * apr_dbd_get_name(const apr_dbd_driver_t *driver, apr_dbd_results_t *res, int col)
apr_dbd_error
const char * apr_dbd_error(const apr_dbd_driver_t *driver, apr_dbd_t *handle, int errnum)
apr_dbd_get_entry
const char * apr_dbd_get_entry(const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col)
APR_DBD_TYPE_USHORT
@ APR_DBD_TYPE_USHORT
Definition: apr_dbd.h:60
APR_DBD_TYPE_NULL
@ APR_DBD_TYPE_NULL
Definition: apr_dbd.h:78
APR_DBD_TYPE_TEXT
@ APR_DBD_TYPE_TEXT
Definition: apr_dbd.h:70
apr_dbd_transaction_start
int apr_dbd_transaction_start(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_transaction_t **trans)
apr_dbd_prepare
int apr_dbd_prepare(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *query, const char *label, apr_dbd_prepared_t **statement)
apr_dbd_pvbquery
int apr_dbd_pvbquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...)
apr_dbd_num_cols
int apr_dbd_num_cols(const apr_dbd_driver_t *driver, apr_dbd_results_t *res)
apr_dbd_native_handle
void * apr_dbd_native_handle(const apr_dbd_driver_t *driver, apr_dbd_t *handle)
apr_dbd_pvquery
int apr_dbd_pvquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...)
apr_dbd_open
apr_status_t apr_dbd_open(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle)
APR_DBD_TYPE_UTINY
@ APR_DBD_TYPE_UTINY
Definition: apr_dbd.h:58
APR_DBD_TYPE_UINT
@ APR_DBD_TYPE_UINT
Definition: apr_dbd.h:62
apr_dbd_pquery
int apr_dbd_pquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, int nargs, const char **args)
apr_dbd_close
apr_status_t apr_dbd_close(const apr_dbd_driver_t *driver, apr_dbd_t *handle)
APR_DBD_TYPE_TIME
@ APR_DBD_TYPE_TIME
Definition: apr_dbd.h:71
apr_dbd_pselect
int apr_dbd_pselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, int nargs, const char **args)
apr_dbd_datum_get
apr_status_t apr_dbd_datum_get(const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col, apr_dbd_type_e type, void *data)
apr_dbd_type_e
apr_dbd_type_e
Definition: apr_dbd.h:55
apr_dbd_get_driver
apr_status_t apr_dbd_get_driver(apr_pool_t *pool, const char *name, const apr_dbd_driver_t **driver)
APR_DBD_TYPE_DATE
@ APR_DBD_TYPE_DATE
Definition: apr_dbd.h:72
APR_DBD_TYPE_SHORT
@ APR_DBD_TYPE_SHORT
Definition: apr_dbd.h:59
apr_dbd_init
apr_status_t apr_dbd_init(apr_pool_t *pool)
APR_DBD_TYPE_LONGLONG
@ APR_DBD_TYPE_LONGLONG
Definition: apr_dbd.h:65
APR_DBD_TYPE_ZTIMESTAMP
@ APR_DBD_TYPE_ZTIMESTAMP
Definition: apr_dbd.h:75
apr_dbd_transaction_end
int apr_dbd_transaction_end(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_transaction_t *trans)
apr_dbd_check_conn
int apr_dbd_check_conn(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle)
APR_DBD_TYPE_TINY
@ APR_DBD_TYPE_TINY
Definition: apr_dbd.h:57
APR_DBD_TYPE_TIMESTAMP
@ APR_DBD_TYPE_TIMESTAMP
Definition: apr_dbd.h:74
APR_DBD_TYPE_ULONG
@ APR_DBD_TYPE_ULONG
Definition: apr_dbd.h:64
apr_dbd_open_ex
apr_status_t apr_dbd_open_ex(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle, const char **error)
APR_DBD_TYPE_FLOAT
@ APR_DBD_TYPE_FLOAT
Definition: apr_dbd.h:67
APR_DBD_TYPE_INT
@ APR_DBD_TYPE_INT
Definition: apr_dbd.h:61
APR_DBD_TYPE_ULONGLONG
@ APR_DBD_TYPE_ULONGLONG
Definition: apr_dbd.h:66