123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /*
- * $Id$
- *
- * PostgreSQL Database Driver for SER
- *
- * Portions Copyright (C) 2001-2003 FhG FOKUS
- * Copyright (C) 2003 August.Net Services, LLC
- * Portions Copyright (C) 2005-2008 iptelorg GmbH
- *
- * This file is part of SER, a free SIP server.
- *
- * SER is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version
- *
- * For a license to use the ser software under conditions other than those
- * described here, or to purchase support for this software, please contact
- * iptel.org by e-mail at the following addresses: [email protected]
- *
- * SER is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- #ifndef _PG_OID_H
- #define _PG_OID_H
- /** \addtogroup postgres
- * @{
- */
- /** \file
- * Data structures and functions implementing support for PostgreSQL Oid
- * identifiers.
- */
- #include <libpq-fe.h>
- /** Structure mapping field names to Oids.
- * This structure is used to map field names or data type names to their
- * Oids/field types.
- */
- typedef struct pg_type {
- Oid oid; /**< PostgreSQL Oid (object identifier) */
- char* name; /**< Field name */
- } pg_type_t;
- /** Enumeration of supported PostreSQL types.
- * This is the enumeration of all PostgreSQL types supported
- * by this driver, that means this driver will be able to convert
- * to and from these types.
- *
- * This enum is primarilly used as index to arrays of pg_type_t that are
- * stored in pg_con structures. Upon connecting to a PostgreSQL server the
- * driver retrieves the list of supported data types and oids from the server
- * and stores then in an array. Different PostgreSQL servers can have
- * different Oids for various data types so we have to have one array that
- * maps symbolic names below to Oids per connection/server.
- */
- enum pg_type_id {
- PG_BOOL = 0, /**< Boolean, true/false */
- PG_BYTE, /**< Binary data */
- PG_CHAR, /**< Single character */
- PG_INT8, /**< Integer with 8-byte storage */
- PG_INT2, /**< Integer with 2-byte storage */
- PG_INT4, /**< Integer with 4-byte storage */
- PG_TEXT, /**< Variable-length string, no limit specified */
- PG_FLOAT4, /**< Single-precision floating point number, 4-byte storage */
- PG_FLOAT8, /**< Double-precision floating point number, 8-byte storage */
- PG_INET, /**< IP address/netmask, host address */
- PG_BPCHAR, /**< Blank-padded string, fixed storage length */
- PG_VARCHAR, /**< Non-blank padded string, variable storage length */
- PG_TIMESTAMP, /**< Date and time */
- PG_TIMESTAMPTZ, /**< Date and time with time zone */
- PG_BIT, /**< Fixed-length bit string */
- PG_VARBIT, /**< Variable-length bit string */
- PG_ID_MAX /**< Bumper, this must be the last element of the enum */
- };
- /** Creates a new Oid mapping table.
- * The function creates a new Oid mapping table and initalizes the contents
- * of the table with values obtained from the PostgreSQL result in parameter.
- * Each element of the table maps field type name to oid and vice versa.
- * @param res A PostgreSQL result structure used to initialize the array.
- * @retval A pointer to the resulting array.
- * @retval NULL on error.
- */
- pg_type_t* pg_new_oid_table(PGresult* res);
- /** Frees all memory used by the table
- * @param table A pointer to table to be freed
- */
- void pg_destroy_oid_table(pg_type_t* table);
- /** Maps a field type name to Oid.
- * @param oid The resulting oid
- * @param table The mapping table
- * @param name Field type name
- * @retval 0 on success
- * @retval 1 if the type name is unknown
- * @retval -1 on error.
- */
- int pg_name2oid(Oid* oid, pg_type_t* table, const char* name);
- /** Maps a field type name to Oid.
- * @param oid The resulting oid
- * @param table The mapping table
- * @param name Field type name
- * @retval 0 on success
- * @retval 1 if the type name is unknown
- * @retval -1 on error.
- */
- int pg_oid2name(const char** name, pg_type_t* table, Oid oid);
- /** @} */
- #endif /* _PG_OID_H */
|