Although PostgreSQL supports large objects, these require explicit programming support in the driver, and are not supported.
It is always possible to retrieve the last inserted row, and hence any unique key in that row even if the key is generated by the PostgreSQL server (for instance, a serial column).
The table below contains a summary of the types that appear in the table designer when in design view. Please see the PgSQL documentation for authoratative details. All PgSQL type options may not be available; a number of types are marked Unknown where the PgSQL programming API defines a type that is not obviously described in the documentation.
Type | PgSQL |
Boolean | Logical (true/false) value. |
Bytea | Binary data |
Char | Fixed length character string |
VarChar | Variable length character string |
Name | Unknown |
Int8 | 8-byte integer value. Rekall cannot handle values outside the range of the integer type. |
Int2 | 2-byte integer value, range -32768 to +32767. |
Integer | 4-byte integer value, range -2147483648 to +2147483647. |
Numeric | Exact numeric with selectable precision. |
Text | Variable length character string. |
Oid | Object identifier type, used internally. |
Point | Geometric point in 2d plane. |
Lseg | Line segment in 2d plane. |
Path | Open and closed geometric path in 2D plane. |
Box | Rectangular box in 2d plane. |
Polygon | Closed geometric path in 2D plane. |
Line | Infinite line in 2D plane. |
Loat4 | Variable precision number, 6 digits of precision. |
Float8 | Variable precision number, 15 digits of precision. |
Abstime | Unknown |
Reltime | Unknown |
Interval | General use time span |
Circle | Circle in 2D plane |
Money | US-style currency |
MacAddr | MAC address |
INet | IP host address |
CIdr | IP network address |
Date | Calendar date (year, month, day). |
Time | Time of day |
DateTime | Combines date and time (timestamp). |
The advanced settings for the server dialog are described below.
Use Serial Type for Primary KeyThe default behaviour of the PostgreSQL driver, when creating a table with a primary key, is to create an associated sequence and to use this to generate unique primary key values. The sequence is used in such a way that if the table is renamed, then the sequence can also be renamed. This means that the sequence create table A, rename table A as B, create table A works as might be expected.
However, if this option is set, then a primary key column is created using the PostgreSQL serial type. This actually causes PostgreSQL to create an integer column and a related sequence, and to assign a default value expression to the the column which uses the sequence (hence, inserting a row into the table without specifying a value for the column will use the next value from the sequence).
While this is convenient, and accords with the purpose of serial, the create table/rename table/create table sequence described above will fail, since the sequence is not renamed, and the second create table fails.
Show Tables Irrespective of UserNormally, Rekall only shows PostgreSQL tables (and views) which are owned by the logged-in user. If this option is set then all tables (and views) in the PostgreSQL server database to which Rekall is connected will be shown.
Show PostgreSQL ObjectsSetting this option will show all PostgreSQL objects (ie., the tables and views whose names start with pg_).
Log internal driver queriesThe PostgreSQL driver issues a number of queries in order to retrieve information (such as the columns in a table) which are not specified by the user. Normally, these queries are not passed to the query logger, however this option can be set to enable such logging.
Requires SSL ConnectionSetting this option will cause a connection to the PostgreSQL server database if the PostgreSQL client library supports SSL connections to the server, but an SSL connection cannot be established. The RedHat8.0 client library is known to support SSL; the Windows client library does not.
Record LockingPostgreSQL 7.3 is required for full use of record locking. Prior to this release, if an attempt was made to access a locked record using select ... for update, then the request will hang until the record is unlocked. This is turn would hang up Rekall.
PostgreSQL 7.3 introduces a statement timeout setting, which can be used to prevent this. The PostgreSQL tab of the advanced settings dialog contains two settings, Statement timeout and Lock for update timeout. The former sets the statement timeout for normal use, and should normally be set to zero, meaning no timeout. The latter specifies the timeout, in milli-seconds, to be used when executing a select ... for update query. This should be long enough that the query will execute normally if the record is not locked, but short enough that the user is not kept waiting for too long when the record is locked.
If using Rekall with PostgreSQL prior to 7.3, the Use statement timeouts checkbox should be left unchecked, so that Rekall does not try to set the statement timeout. It should be checked with PostgreSQL 7.3 in order to enable the timeout settings.