---
name: "PQregisterUserDefinedTypes"
section: "3"
platform: "linux"
package: "libpqtypes-dev"
version: "1.5.1-9"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/PQregisterUserDefinedTypes"
---

# PQregisterUserDefinedTypes(3)

Registers a user-defined types.

## NAME

PQregisterUserDefinedTypes - Registers a user-defined types.

## SYNOPSIS

**#include \<libpqtypes.h\>**\

**int PQregisterUserDefinedTypes(PGconn \****conn***, PGregisterType \****types***,**\
\
                                **int** *count***);**

## DEPRECATED

*THIS FUNCTION IS DEPRECATED.  New applications should use PQregisterTypes.* *This function is now a wrapper to PQregisterTypes.*

## DESCRIPTION

*The PQregisterUserDefinedTypes() function allows an application* *to register one or more user-defined types at runtime.  User-defined types* *are custom types in a backend that implement their own C procedures for* *in/out/send/recv.*

*This function must execute a query against the backend to retrieve type* *information for each user-defined type, thus this should not be called* *from within a transaction.  It is recommended to register multiple types at* *the same time to avoid round trip overhead.*

*The types argument is an array containing count user-defined* *types to register. If any type does not exist, the register* *is aborted.  Either typput and/or typget must be specified for each type* *in the types array.*

*NOTE: The typname member of the PGregisterType structure can optionally* *contain the type's schema: schema.typname.*

*WARNING: PQparamCreate is only aware of types that have already been* *registered.  If you need to put a type into a param, make sure it is first* *registered.*

**User-defined Types Registration**\
 *This example registers two user-defined types.*

```

```

**PGregisterType types\[\] = {**\
 	**{"graphics.rgb", rgb\_put, rgb\_get},**\
 	**{"graphics.digon", digon\_put, digon\_get}** **};**

**if (!PQregisterUserDefinedTypes(conn, types, 2))**\
 	**fprintf(stderr, "PQregisterUserDefinedTypes: %s\\n", PQgeterror());**

## RETURN VALUE

*On success, a non-zero value is returned.  On error, zero is* *returned and [PQgeterror(3)](/PQgeterror/3.md) will contain an error message.*

## EXAMPLES

*None.*

## AUTHOR

*A contribution of eSilo, LLC. for the PostgreSQL Database Management System.* *Written by Andrew Chernow and Merlin Moncure.*

## REPORTING BUGS

*Report bugs to \<libpqtypes@esilo.com\>.*

## COPYRIGHT

*Copyright (c) 2011 eSilo, LLC. All rights reserved.*\
 *This is free software; see the source for copying conditions.* *There is NO warranty; not even for MERCHANTABILITY or  FITNESS* *FOR A PARTICULAR PURPOSE.*

## SEE ALSO

*[pqt-handlers(3)](/pqt-handlers/3.md), [PQputf(3)](/PQputf/3.md), [PQgetf(3)](/PQgetf/3.md)*
