These functions manage the opaque PGparam object.
PQparamCreate() will allocate and initialize a new PGparam object.
After the create call, the PGparam object is ready for use. WARNING: Only
types that have been registered via PQregisterXXX, will be available
to the param. Meaning, the param is not updated with types registered
after the param is created.
PQparamDup() will duplicate a given PGparam, including any internal
values that have already been put. This is useful in cases where you want
to queue qeuries to execute at a later time, like a connection pooler. The
problem is PGparamCreate requires a connection object, which may not be
available when attempting to enqueue a query with its PGparam object.
Instead, a PGparam object can used for the sole purpose of creating
duplicates while there are no available PGconn objects.
PQparamCount() gets the number of parameters in a PGparam object.
PQparamReset() will clear out any previously put parameters, but will
not free any memory. This is useful for application looking to "reuse" a
PQparamClear() releases all resources being used by a PGparam object,
the object should not be used after a clear.
It is very important to call PQparamReset() if you plan on reusing a
PQparamCreate() returns a pointer to a PGparam object on success and NULL
if something failed (check PQgeterror(3) for more information).
PQparamCount() returns the number of parameters in a PGparam object.
PQparamReset() and PQparamClear() have no return values. If
either function is provided a NULL PGparam pointer, it will silently fail.