Rogue Wave banner
Previous fileTop of DocumentContentsIndex pageNext file
DB Access Module for PostgreSQL User's Guide
Rogue Wave web site:  Home Page  |  Main Documentation Page

2.3 Data Types

The classes RWDBColumn and RWDBValue have an associated RWDBValue::ValueType that specifies the data type of the database column or field being referenced. Mapping between this data type 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 Data Type RWDBValue:: ValueType C++ Data Type
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) DateTime RWDateTime
time(p) with
time zone
DateTime RWDateTime
timestamp(p) DateTime RWDateTime
timestamp(p)
with time zone
DateTime RWDateTime

Table 2: Type mapping when creating tables

RWDBValue::ValueType PostgreSQL Data Type

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 Data Types

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 data types

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 data type is not supported.
LongLong, UnsignedLongLong No restrictions.
LongDouble No restrictions.
String No restrictions.
Short, UnsignedShort No restrictions.
WString This data type is not supported.
UString This data type 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 DocumentContentsIndex pageNext 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.
Contact Rogue Wave about documentation or support issues.