my $tester = dbixcsl_common_tests->new(
vendor => 'Pg',
auto_inc_pk => 'SERIAL NOT NULL PRIMARY KEY',
- default_function => 'now()',
dsn => $dsn,
user => $user,
password => $password,
data_types => {
- 'bigint' => { size => undef, data_type => 'bigint' },
- 'int8' => { size => undef, data_type => 'bigint' },
- 'bigserial' => { size => undef, data_type => 'bigint', is_auto_increment => 1 },
- 'serial8' => { size => undef, data_type => 'bigint', is_auto_increment => 1 },
- 'bit' => { size => undef, data_type => 'bit' },
- 'boolean' => { size => undef, data_type => 'boolean' },
- 'bool' => { size => undef, data_type => 'boolean' },
- 'box' => { size => undef, data_type => 'box' },
- 'bytea' => { size => undef, data_type => 'bytea' },
- 'cidr' => { size => undef, data_type => 'cidr' },
- 'circle' => { size => undef, data_type => 'circle' },
- 'date' => { size => undef, data_type => 'date' },
- 'double precision' => { size => undef, data_type => 'double precision' },
- 'float8' => { size => undef, data_type => 'double precision' },
- 'inet' => { size => undef, data_type => 'inet' },
- 'integer' => { size => undef, data_type => 'integer' },
- 'int' => { size => undef, data_type => 'integer' },
- 'int4' => { size => undef, data_type => 'integer' },
- 'interval' => { size => undef, data_type => 'interval' },
- 'interval(2)' => { size => 2, data_type => 'interval' },
- 'line' => { size => undef, data_type => 'line' },
- 'lseg' => { size => undef, data_type => 'lseg' },
- 'macaddr' => { size => undef, data_type => 'macaddr' },
- 'money' => { size => undef, data_type => 'money' },
- 'path' => { size => undef, data_type => 'path' },
- 'point' => { size => undef, data_type => 'point' },
- 'polygon' => { size => undef, data_type => 'polygon' },
- 'real' => { size => undef, data_type => 'real' },
- 'float4' => { size => undef, data_type => 'real' },
- 'smallint' => { size => undef, data_type => 'smallint' },
- 'int2' => { size => undef, data_type => 'smallint' },
- 'serial' => { size => undef, data_type => 'integer', is_auto_increment => 1 },
- 'serial4' => { size => undef, data_type => 'integer', is_auto_increment => 1 },
- 'text' => { size => undef, data_type => 'text' },
- 'time' => { size => undef, data_type => 'time without time zone' },
- 'time(2)' => { size => 2, data_type => 'time without time zone' },
- 'time without time zone' => { size => undef, data_type => 'time without time zone' },
- 'time(2) without time zone' => { size => 2, data_type => 'time without time zone' },
- 'time with time zone' => { size => undef, data_type => 'time with time zone' },
- 'time(2) with time zone' => { size => 2, data_type => 'time with time zone' },
- 'timestamp' => { size => undef, data_type => 'timestamp without time zone' },
- 'timestamp(2)' => { size => 2, data_type => 'timestamp without time zone' },
- 'timestamp without time zone' => { size => undef, data_type => 'timestamp without time zone' },
- 'timestamp(2) without time zone' => { size => 2, data_type => 'timestamp without time zone' },
- 'timestamp with time zone' => { size => undef, data_type => 'timestamp with time zone' },
- 'timestamp(2) with time zone' => { size => 2, data_type => 'timestamp with time zone' },
- 'bit varying(2)' => { size => 2, data_type => 'bit varying' },
- 'varbit(2)' => { size => 2, data_type => 'bit varying' },
- 'character varying(2)' => { size => 2, data_type => 'character varying' },
- 'varchar(2)' => { size => 2, data_type => 'character varying' },
- 'character(2)' => { size => 2, data_type => 'character' },
- 'char(2)' => { size => 2, data_type => 'character' },
- 'numeric(6, 3)' => { size => [6,3], data_type => 'numeric' },
- 'decimal(6, 3)' => { size => [6,3], data_type => 'numeric' },
- 'float(24)' => { size => undef, data_type => 'real' },
- 'float(53)' => { size => undef, data_type => 'double precision' },
- 'float' => { size => undef, data_type => 'double precision' },
+ # http://www.postgresql.org/docs/7.4/interactive/datatype.html
+ #
+ # Numeric Types
+ boolean => { data_type => 'boolean' },
+ bool => { data_type => 'boolean' },
+ 'bool default false'
+ => { data_type => 'boolean', default_value => \'false' },
+
+ bigint => { data_type => 'bigint' },
+ int8 => { data_type => 'bigint' },
+ bigserial => { data_type => 'bigint', is_auto_increment => 1 },
+ serial8 => { data_type => 'bigint', is_auto_increment => 1 },
+ integer => { data_type => 'integer' },
+ int => { data_type => 'integer' },
+ int4 => { data_type => 'integer' },
+ serial => { data_type => 'integer', is_auto_increment => 1 },
+ serial4 => { data_type => 'integer', is_auto_increment => 1 },
+ smallint => { data_type => 'smallint' },
+ int2 => { data_type => 'smallint' },
+
+ money => { data_type => 'money' },
+
+ 'double precision' => { data_type => 'double precision' },
+ float8 => { data_type => 'double precision' },
+ real => { data_type => 'real' },
+ float4 => { data_type => 'real' },
+ 'float(24)' => { data_type => 'real' },
+ 'float(25)' => { data_type => 'double precision' },
+ 'float(53)' => { data_type => 'double precision' },
+ float => { data_type => 'double precision' },
+
+ numeric => { data_type => 'numeric' },
+ decimal => { data_type => 'numeric' },
+ 'numeric(6,3)' => { data_type => 'numeric', size => [6,3] },
+ 'decimal(6,3)' => { data_type => 'numeric', size => [6,3] },
+
+ # Bit String Types
+ 'bit varying(2)' => { data_type => 'varbit', size => 2 },
+ 'varbit(2)' => { data_type => 'varbit', size => 2 },
+ 'varbit' => { data_type => 'varbit' },
+ bit => { data_type => 'bit', size => 1 },
+ 'bit(3)' => { data_type => 'bit', size => 3 },
+
+ # Network Types
+ inet => { data_type => 'inet' },
+ cidr => { data_type => 'cidr' },
+ macaddr => { data_type => 'macaddr' },
+
+ # Geometric Types
+ point => { data_type => 'point' },
+ line => { data_type => 'line' },
+ lseg => { data_type => 'lseg' },
+ box => { data_type => 'box' },
+ path => { data_type => 'path' },
+ polygon => { data_type => 'polygon' },
+ circle => { data_type => 'circle' },
+
+ # Character Types
+ 'character varying(2)' => { data_type => 'varchar', size => 2 },
+ 'varchar(2)' => { data_type => 'varchar', size => 2 },
+ 'character(2)' => { data_type => 'char', size => 2 },
+ 'char(2)' => { data_type => 'char', size => 2 },
+ 'character' => { data_type => 'char', size => 1 },
+ 'char' => { data_type => 'char', size => 1 },
+ text => { data_type => 'text' },
+ # varchar with no size has unlimited size, we rewrite to 'text'
+ varchar => { data_type => 'text',
+ original => { data_type => 'varchar' } },
+
+ # Datetime Types
+ date => { data_type => 'date' },
+ interval => { data_type => 'interval' },
+ 'interval(2)' => { data_type => 'interval', size => 2 },
+ time => { data_type => 'time' },
+ 'time(2)' => { data_type => 'time', size => 2 },
+ 'time without time zone' => { data_type => 'time' },
+ 'time(2) without time zone' => { data_type => 'time', size => 2 },
+ 'time with time zone' => { data_type => 'time with time zone' },
+ 'time(2) with time zone' => { data_type => 'time with time zone', size => 2 },
+ timestamp => { data_type => 'timestamp' },
+ 'timestamp default now()'
+ => { data_type => 'timestamp', default_value => \'current_timestamp',
+ original => { default_value => \'now()' } },
+ 'timestamp(2)' => { data_type => 'timestamp', size => 2 },
+ 'timestamp without time zone' => { data_type => 'timestamp' },
+ 'timestamp(2) without time zone' => { data_type => 'timestamp', size => 2 },
+
+ 'timestamp with time zone' => { data_type => 'timestamp with time zone' },
+ 'timestamp(2) with time zone' => { data_type => 'timestamp with time zone', size => 2 },
+
+ # Blob Types
+ bytea => { data_type => 'bytea' },
},
extra => {
create => [
else {
$tester->run_tests();
}
+# vim:et sw=4 sts=4 tw=0: