![]() |
![]() |
![]() |
GNOME Data Access 4 manual | ![]() |
---|
The following limitations apply to PostgreSQL databases accessed via Libgda:
Postgres uses the "Oid" data type to internally store BLOBs, but this type is also used to store other information within the database. Libgda assumes that any column of type "Oid" represents a blob. If this is not the case, then you must cast it to the correct data type within your SQL query (for example as "SELECT oid::varchar FROM...")
Libgda does not try to avoid orphaned BLOBs, to solve the problem of orphaned BLOBs, set up the "lo" extension from PostgreSQL's contrib, and/or use the "vacuumlo" also from the contrib.
Note that in the future the PostgreSQL's provider will have an option to ensure that there are no orphaned BLOBs itself.
BLOB manipulations can only occur within a transaction, so you should start a transaction before any operation on BLOBs, otherwise Libgda will automatically start one
The gda_connection_statement_execute_non_select()'s last_insert_row parameter will return a new GdaSet object only if the table has OIDs (to ensure this, the "WITH OIDS" option should be added at the end of a CREATE TABLE query).
If PostgreSQL was not compiled with the --enable-thread-safety
flag,
then the database provider will only allow
connections to be opened from the thread which initializes Libgda. Otherwise there is no limitation.