Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
DB Access Module for PostgreSQL User's Guide

2.3 Datatypes

The classes RWDBColumn and RWDBValue have an associated RWDBValue::ValueType that specifies the datatype of the database column or field being referenced. Mapping between this datatype and the database vendor type runs in both directions:

The RWDBValue::ValueTypes, accessible through the type() method, are uniform across all Access Modules. For a complete explanation of the DB Interface Module data model, see Chapter 7, "The Data Model," in the DB Interface Module User's Guide, and RWDBValue in the SourcePro C++ API Reference Guide.

Table 1: Type mapping when retrieving data

PostgreSQL Datatype RWDBValue:: ValueType C++ Datatype
bigint LongLong long long
bigserial LongLong long long
bit
bit varying(n)
String RWCString
boolean String RWCString
box String RWCString
bytea Blob RWDBBlob
char(n) String RWCString
varchar(n) String RWCString
cidr String RWCString
circle String RWCString
date Date RWDate
double precision Double double
inet String RWCString
integer Long long int
interval(p) Duration RWDBDuration
line String RWCString
lseg String RWCString
macaddr String RWCString
money String RWCString
numeric Decimal RWDecimalPortable
path String RWCString
point String RWCString
polygon String RWCString
real Float float
smallint Short short int
serial Long long int
text String RWCString
time(p)1 DateTime RWDateTime
time(p) with
time zone1
DateTime RWDateTime
timestamp(p)1 DateTime RWDateTime
timestamp(p)
with time zone1
DateTime RWDateTime
  1. Values of type time, time with time zone, timestamp, and timestamp with time zone are affected by the time zone setting on either RWDBDatabase or RWDBConnection while sending and retrieving data. The time zone setting can be set programmatically with the timeZone() method in each of these classes.

Table 2: Type mapping when creating tables

RWDBValue::ValueType PostgreSQL Datatype

Blob

bytea
Char
UnsignedChar
Tiny
UnsignedTiny
Short
UnsignedShort
smallint
Date date
DateTime timestamp[(p)] using precision of column if specified
Decimal numeric(p,s) using precision and scale of column if specified
Duration interval[(p)] using precision of column if specified
Double double precision
Float real
Int
UnsignedInt
integer
Long
UnsignedLong
integer
LongLong
UnsignedLongLong
bigint
String varchar(n) if storageLength is specified, else text

2.3.1 Restrictions on the Use of Datatypes

The PostgreSQL database places restrictions on the use of certain datatypes. Where possible, the DB Interface Module is flexible about datatypes. However, there are some situations where conversions are not possible. In these cases your applications must be aware of the contexts in which certain datatypes can be used. Table 3 outlines the known restrictions associated with each DB Interface Module type.

Table 3: Restrictions on the use of DB Interface Module datatypes

RWDBValue::ValueType Restrictions
Blob No restrictions.
Char
UnsignedChar
No restrictions.
Date Only the PostgreSQL DateStyle ISO, MDY is supported.
DateTime Accuracy provided by PostgreSQL is microseconds, but RWDateTime is limited to milliseconds. Only the PostgreSQL DateStyle ISO 8601 format in MDY mode is supported.
Decimal No restrictions.
Double No restrictions.
Duration No restrictions.
Float No restrictions.
Int
UnsignedInt
No restrictions.
Long
UnsignedLong
No restrictions.
MBString This datatype is not supported.
LongLong
UnsignedLongLong
No restrictions.
LongDouble No restrictions.
String No restrictions.
Short
UnsignedShort
No restrictions.
WString This datatype is not supported.
UString This datatype is not supported.

2.3.2 Serial Columns in Tables

If a table contains a SERIAL column, PostgreSQL gives you two options:

Therefore, to let PostgreSQL assign the value, you must skip that column when using an RWDBInserter. Please see the method RWDBInserter::operator[] in the DB Interface Module Class Reference.

When reading a table that contains one or more serial columns, serial columns are treated as regular columns.



Previous fileTop of DocumentContentsNo linkNext file

Copyright © Rogue Wave Software, Inc. All Rights Reserved.

The Rogue Wave name and logo, and SourcePro, are registered trademarks of Rogue Wave Software. All other trademarks are the property of their respective owners.
Provide feedback to Rogue Wave about its documentation.