PostgreSQL.h


ŠP3 Consulting, 2002-2003 All Rights Reserved

This is a Cocoa-wrapper around the libcpg functions for connecting to a PostgreSQL database.

As some of you will notice most of the following API is designed to be - as far as possible - source code compatible with OpenBase Basic API.
This is due to the simple fact that I also used OpenBase and want to migrate as easely as possible some of my own code to PostgreSQL.
In order to support uniqueRowIdForTable functionnality, you have to had a
_rowid BIGSERIAL NOT NULL UNIQUE PRIMARY KEY
field to every table you plan to use with uniqueRowIdForTable.

Differences with OpenBase API:
- markRow and removeMarkOnRow are not implemented -
LOCKING strategy is not impemented that way in PostgreSQL please refer to PostgreSQL doc and use executeCommand to achieve desired functionality.

- databaseEncodingName is not implemented

- notification mechanism is different
we use LISTEN (and UNLISTEN to disable a notification) to register a PgSQLListener object that will be called by an NSTimer at a user specified interval, if a PostgreSQL notification is detected at that time, the pgSQLNotify method (defined in PgSQLListener protocol) of a user specified object will be called.

- large object support has different - but close - API
- Oid are used instead of char[] to hold large object reference
- more functionnality is available including reading and writing part of large object.


DEMO WARNING
demonstration version limited to:
no more than 50 records are returned from any query
methods affected are
nextRow: returns false when 50th record is reached
afterLastRow: position cursor on 50th record
resultAsDictionary: only the first 50 rows are returned

Be careful: rowsAffected method returns the REAL result count of the originating query.

Methods not implemented:
beginTransaction, endTransaction, rollbackTransaction

PostgreSQL limitation:
resultTableName is not implemented (returns "NOT_SUPPORTED_BY_POSTGRESQL")
I don't have found yet a way to returns the name of the originating table of a query's resulting column...
If anybody has an idea how to do it, please let me know.




Methods implemented by the delegate
-(void)postgreSQLAsyncResultAvailable:(PostgreSQL *)inConn;
-(void)postgreSQLAsyncResulTimedOut:(PostgreSQL *)inConn;
-(void)postgreSQL:(PostgreSQL *)inConn notification:(NSDictionary *)inDict;

Notifications sent
PostgreSQLNotification when a NOTIFY is received from backend. PostgreSQLResultAvailable when result from an asynchronous query is available. PostgreSQLTimeOut when a timeout occured on an asynchronous query.





(Last Updated 12/27/2002)
HTML documentation generated by HeaderDoc