Author: turnstep
Date: Sun Oct 21 13:12:07 2007
New Revision: 10101

Modified:
   DBD-Pg/trunk/Changes
   DBD-Pg/trunk/Pg.pm
   DBD-Pg/trunk/Pg.xs
   DBD-Pg/trunk/t/01constants.t
   DBD-Pg/trunk/types.c
   DBD-Pg/trunk/types.h

Log:
Force SQL_REAL and SQL_NUMERIC to use float8 not float4, per bug 30010.
Update the types with some new information.


Modified: DBD-Pg/trunk/Changes
==============================================================================
--- DBD-Pg/trunk/Changes        (original)
+++ DBD-Pg/trunk/Changes        Sun Oct 21 13:12:07 2007
@@ -1,6 +1,8 @@
 ('GSM' is Greg Sabino Mullane, [EMAIL PROTECTED])
 
 2.0.0
+       - Force SQL_REAL and SQL_NUMERIC to be float8 not float4.
+               (CPAN bug #30010) [GSM]
        - Fix memory leak when using savepoints. (CPAN bug #29791)
                [EMAIL PROTECTED]
        - Allow data_sources to accept optional arguments. [GSM]

Modified: DBD-Pg/trunk/Pg.pm
==============================================================================
--- DBD-Pg/trunk/Pg.pm  (original)
+++ DBD-Pg/trunk/Pg.pm  Sun Oct 21 13:12:07 2007
@@ -51,10 +51,10 @@
                        PG_TEXT PG_TEXTARRAY PG_TID PG_TIDARRAY PG_TIME
                        PG_TIMEARRAY PG_TIMESTAMP PG_TIMESTAMPARRAY 
PG_TIMESTAMPTZ PG_TIMESTAMPTZARRAY
                        PG_TIMETZ PG_TIMETZARRAY PG_TINTERVAL PG_TINTERVALARRAY 
PG_TRIGGER
-                       PG_TSQUERY PG_TSQUERYARRAY PG_TSVECTOR PG_TSVECTORARRAY 
PG_UNKNOWN
-                       PG_UUID PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY PG_VARCHAR
-                       PG_VARCHARARRAY PG_VOID PG_XID PG_XIDARRAY PG_XML
-                       PG_XMLARRAY
+                       PG_TSQUERY PG_TSQUERYARRAY PG_TSVECTOR PG_TSVECTORARRAY 
PG_TXID_SNAPSHOT
+                       PG_TXID_SNAPSHOTARRAY PG_UNKNOWN PG_UUID PG_UUIDARRAY 
PG_VARBIT
+                       PG_VARBITARRAY PG_VARCHAR PG_VARCHARARRAY PG_VOID PG_XID
+                       PG_XIDARRAY PG_XML PG_XMLARRAY
                )]
        );
 
@@ -2827,9 +2827,10 @@
 PG_REGTYPEARRAY PG_RELTIME PG_RELTIMEARRAY PG_SMGR PG_TEXT PG_TEXTARRAY
 PG_TID PG_TIDARRAY PG_TIME PG_TIMEARRAY PG_TIMESTAMP PG_TIMESTAMPARRAY
 PG_TIMESTAMPTZ PG_TIMESTAMPTZARRAY PG_TIMETZ PG_TIMETZARRAY PG_TINTERVAL 
PG_TINTERVALARRAY
-PG_TRIGGER PG_TSQUERY PG_TSQUERYARRAY PG_TSVECTOR PG_TSVECTORARRAY PG_UNKNOWN
-PG_UUID PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY PG_VARCHAR PG_VARCHARARRAY
-PG_VOID PG_XID PG_XIDARRAY PG_XML PG_XMLARRAY
+PG_TRIGGER PG_TSQUERY PG_TSQUERYARRAY PG_TSVECTOR PG_TSVECTORARRAY 
PG_TXID_SNAPSHOT
+PG_TXID_SNAPSHOTARRAY PG_UNKNOWN PG_UUID PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY
+PG_VARCHAR PG_VARCHARARRAY PG_VOID PG_XID PG_XIDARRAY PG_XML
+PG_XMLARRAY
 
 Data types are "sticky," in that once a data type is set to a certain 
placeholder,
 it will remain for that placeholder, unless it is explicitly set to something

Modified: DBD-Pg/trunk/Pg.xs
==============================================================================
--- DBD-Pg/trunk/Pg.xs  (original)
+++ DBD-Pg/trunk/Pg.xs  Sun Oct 21 13:12:07 2007
@@ -146,6 +146,8 @@
        PG_TSQUERYARRAY      = 3645
        PG_TSVECTOR          = 3614
        PG_TSVECTORARRAY     = 3643
+       PG_TXID_SNAPSHOT     = 2970
+       PG_TXID_SNAPSHOTARRAY = 2949
        PG_UNKNOWN           = 705
        PG_UUID              = 2950
        PG_UUIDARRAY         = 2951

Modified: DBD-Pg/trunk/t/01constants.t
==============================================================================
--- DBD-Pg/trunk/t/01constants.t        (original)
+++ DBD-Pg/trunk/t/01constants.t        Sun Oct 21 13:12:07 2007
@@ -1,5 +1,5 @@
 use strict;
-use Test::More tests => 121;
+use Test::More tests => 133;
 
 use DBD::Pg qw(:pg_types :async);
 
@@ -124,6 +124,8 @@
 is(PG_TSQUERYARRAY     ,  3645, 'PG_TSQUERYARRAY returns correct value');
 is(PG_TSVECTOR         ,  3614, 'PG_TSVECTOR returns correct value');
 is(PG_TSVECTORARRAY    ,  3643, 'PG_TSVECTORARRAY returns correct value');
+is(PG_TXID_SNAPSHOT    ,  2970, 'PG_TXID_SNAPSHOT returns correct value');
+is(PG_TXID_SNAPSHOTARRAY,  2949, 'PG_TXID_SNAPSHOTARRAY returns correct 
value');
 is(PG_UNKNOWN          ,   705, 'PG_UNKNOWN returns correct value');
 is(PG_UUID             ,  2950, 'PG_UUID returns correct value');
 is(PG_UUIDARRAY        ,  2951, 'PG_UUIDARRAY returns correct value');

Modified: DBD-Pg/trunk/types.c
==============================================================================
--- DBD-Pg/trunk/types.c        (original)
+++ DBD-Pg/trunk/types.c        Sun Oct 21 13:12:07 2007
@@ -70,6 +70,7 @@
        {PG_TINTERVALARRAY, "_tinterval", ',', "array_out", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_TSQUERYARRAY, "_tsquery", ',', "array_out", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_TSVECTORARRAY, "_tsvector", ',', "array_out", quote_string, 
dequote_string, {0}, 0, 0},
+       {PG_TXID_SNAPSHOTARRAY, "_txid_snapshot", ',', "array_out", 
quote_string, dequote_string, {0}, 0, 0},
        {PG_UUIDARRAY, "_uuid", ',', "array_out", quote_string, dequote_string, 
{0}, 0, 0},
        {PG_VARBITARRAY, "_varbit", ',', "array_out", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_VARCHARARRAY, "_varchar", ',', "array_out", quote_string, 
dequote_string, {0}, 0, 0},
@@ -93,7 +94,7 @@
        {PG_CIRCLE, "circle", ',', "circle_out", quote_circle, dequote_string, 
{0}, 0, 0},
        {PG_CSTRING, "cstring", ',', "cstring_out", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_DATE, "date", ',', "date_out", quote_string, dequote_string, 
{SQL_TYPE_DATE}, 1, 0},
-       {PG_FLOAT4, "float4", ',', "float4out", null_quote, null_dequote, 
{SQL_REAL}, 1, 2},
+       {PG_FLOAT4, "float4", ',', "float4out", null_quote, null_dequote, {0}, 
1, 2},
        {PG_FLOAT8, "float8", ',', "float8out", null_quote, null_dequote, 
{SQL_FLOAT}, 1, 2},
        {PG_GTSVECTOR, "gtsvector", ',', "gtsvectorout", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_INET, "inet", ',', "inet_out", quote_string, dequote_string, {0}, 
0, 0},
@@ -142,6 +143,7 @@
        {PG_TRIGGER, "trigger", ',', "trigger_out", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_TSQUERY, "tsquery", ',', "tsqueryout", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_TSVECTOR, "tsvector", ',', "tsvectorout", quote_string, 
dequote_string, {0}, 0, 0},
+       {PG_TXID_SNAPSHOT, "txid_snapshot", ',', "txid_snapshot_out", 
quote_string, dequote_string, {0}, 0, 0},
        {PG_UNKNOWN, "unknown", ',', "unknownout", quote_string, 
dequote_string, {0}, 0, 0},
        {PG_UUID, "uuid", ',', "uuid_out", quote_string, dequote_string, {0}, 
0, 0},
        {PG_VARBIT, "varbit", ',', "varbit_out", quote_string, dequote_string, 
{0}, 0, 0},
@@ -208,85 +210,87 @@
                case PG_TINTERVALARRAY:    return &pg_types[49];
                case PG_TSQUERYARRAY:      return &pg_types[50];
                case PG_TSVECTORARRAY:     return &pg_types[51];
-               case PG_UUIDARRAY:         return &pg_types[52];
-               case PG_VARBITARRAY:       return &pg_types[53];
-               case PG_VARCHARARRAY:      return &pg_types[54];
-               case PG_XIDARRAY:          return &pg_types[55];
-               case PG_XMLARRAY:          return &pg_types[56];
-               case PG_ABSTIME:           return &pg_types[57];
-               case PG_ACLITEM:           return &pg_types[58];
-               case PG_ANY:               return &pg_types[59];
-               case PG_ANYARRAY:          return &pg_types[60];
-               case PG_ANYELEMENT:        return &pg_types[61];
-               case PG_ANYENUM:           return &pg_types[62];
-               case PG_ANYNONARRAY:       return &pg_types[63];
-               case PG_BIT:               return &pg_types[64];
-               case PG_BOOL:              return &pg_types[65];
-               case PG_BOX:               return &pg_types[66];
-               case PG_BPCHAR:            return &pg_types[67];
-               case PG_BYTEA:             return &pg_types[68];
-               case PG_CHAR:              return &pg_types[69];
-               case PG_CID:               return &pg_types[70];
-               case PG_CIDR:              return &pg_types[71];
-               case PG_CIRCLE:            return &pg_types[72];
-               case PG_CSTRING:           return &pg_types[73];
-               case PG_DATE:              return &pg_types[74];
-               case PG_FLOAT4:            return &pg_types[75];
-               case PG_FLOAT8:            return &pg_types[76];
-               case PG_GTSVECTOR:         return &pg_types[77];
-               case PG_INET:              return &pg_types[78];
-               case PG_INT2:              return &pg_types[79];
-               case PG_INT2VECTOR:        return &pg_types[80];
-               case PG_INT4:              return &pg_types[81];
-               case PG_INT8:              return &pg_types[82];
-               case PG_INTERNAL:          return &pg_types[83];
-               case PG_INTERVAL:          return &pg_types[84];
-               case PG_LANGUAGE_HANDLER:  return &pg_types[85];
-               case PG_LINE:              return &pg_types[86];
-               case PG_LSEG:              return &pg_types[87];
-               case PG_MACADDR:           return &pg_types[88];
-               case PG_MONEY:             return &pg_types[89];
-               case PG_NAME:              return &pg_types[90];
-               case PG_NUMERIC:           return &pg_types[91];
-               case PG_OID:               return &pg_types[92];
-               case PG_OIDVECTOR:         return &pg_types[93];
-               case PG_OPAQUE:            return &pg_types[94];
-               case PG_PATH:              return &pg_types[95];
-               case PG_PG_ATTRIBUTE:      return &pg_types[96];
-               case PG_PG_CLASS:          return &pg_types[97];
-               case PG_PG_PROC:           return &pg_types[98];
-               case PG_PG_TYPE:           return &pg_types[99];
-               case PG_POINT:             return &pg_types[100];
-               case PG_POLYGON:           return &pg_types[101];
-               case PG_RECORD:            return &pg_types[102];
-               case PG_REFCURSOR:         return &pg_types[103];
-               case PG_REGCLASS:          return &pg_types[104];
-               case PG_REGCONFIG:         return &pg_types[105];
-               case PG_REGDICTIONARY:     return &pg_types[106];
-               case PG_REGOPER:           return &pg_types[107];
-               case PG_REGOPERATOR:       return &pg_types[108];
-               case PG_REGPROC:           return &pg_types[109];
-               case PG_REGPROCEDURE:      return &pg_types[110];
-               case PG_REGTYPE:           return &pg_types[111];
-               case PG_RELTIME:           return &pg_types[112];
-               case PG_SMGR:              return &pg_types[113];
-               case PG_TEXT:              return &pg_types[114];
-               case PG_TID:               return &pg_types[115];
-               case PG_TIME:              return &pg_types[116];
-               case PG_TIMESTAMP:         return &pg_types[117];
-               case PG_TIMESTAMPTZ:       return &pg_types[118];
-               case PG_TIMETZ:            return &pg_types[119];
-               case PG_TINTERVAL:         return &pg_types[120];
-               case PG_TRIGGER:           return &pg_types[121];
-               case PG_TSQUERY:           return &pg_types[122];
-               case PG_TSVECTOR:          return &pg_types[123];
-               case PG_UNKNOWN:           return &pg_types[124];
-               case PG_UUID:              return &pg_types[125];
-               case PG_VARBIT:            return &pg_types[126];
-               case PG_VARCHAR:           return &pg_types[127];
-               case PG_VOID:              return &pg_types[128];
-               case PG_XID:               return &pg_types[129];
-               case PG_XML:               return &pg_types[130];
+               case PG_TXID_SNAPSHOTARRAY: return &pg_types[52];
+               case PG_UUIDARRAY:         return &pg_types[53];
+               case PG_VARBITARRAY:       return &pg_types[54];
+               case PG_VARCHARARRAY:      return &pg_types[55];
+               case PG_XIDARRAY:          return &pg_types[56];
+               case PG_XMLARRAY:          return &pg_types[57];
+               case PG_ABSTIME:           return &pg_types[58];
+               case PG_ACLITEM:           return &pg_types[59];
+               case PG_ANY:               return &pg_types[60];
+               case PG_ANYARRAY:          return &pg_types[61];
+               case PG_ANYELEMENT:        return &pg_types[62];
+               case PG_ANYENUM:           return &pg_types[63];
+               case PG_ANYNONARRAY:       return &pg_types[64];
+               case PG_BIT:               return &pg_types[65];
+               case PG_BOOL:              return &pg_types[66];
+               case PG_BOX:               return &pg_types[67];
+               case PG_BPCHAR:            return &pg_types[68];
+               case PG_BYTEA:             return &pg_types[69];
+               case PG_CHAR:              return &pg_types[70];
+               case PG_CID:               return &pg_types[71];
+               case PG_CIDR:              return &pg_types[72];
+               case PG_CIRCLE:            return &pg_types[73];
+               case PG_CSTRING:           return &pg_types[74];
+               case PG_DATE:              return &pg_types[75];
+               case PG_FLOAT4:            return &pg_types[76];
+               case PG_FLOAT8:            return &pg_types[77];
+               case PG_GTSVECTOR:         return &pg_types[78];
+               case PG_INET:              return &pg_types[79];
+               case PG_INT2:              return &pg_types[80];
+               case PG_INT2VECTOR:        return &pg_types[81];
+               case PG_INT4:              return &pg_types[82];
+               case PG_INT8:              return &pg_types[83];
+               case PG_INTERNAL:          return &pg_types[84];
+               case PG_INTERVAL:          return &pg_types[85];
+               case PG_LANGUAGE_HANDLER:  return &pg_types[86];
+               case PG_LINE:              return &pg_types[87];
+               case PG_LSEG:              return &pg_types[88];
+               case PG_MACADDR:           return &pg_types[89];
+               case PG_MONEY:             return &pg_types[90];
+               case PG_NAME:              return &pg_types[91];
+               case PG_NUMERIC:           return &pg_types[92];
+               case PG_OID:               return &pg_types[93];
+               case PG_OIDVECTOR:         return &pg_types[94];
+               case PG_OPAQUE:            return &pg_types[95];
+               case PG_PATH:              return &pg_types[96];
+               case PG_PG_ATTRIBUTE:      return &pg_types[97];
+               case PG_PG_CLASS:          return &pg_types[98];
+               case PG_PG_PROC:           return &pg_types[99];
+               case PG_PG_TYPE:           return &pg_types[100];
+               case PG_POINT:             return &pg_types[101];
+               case PG_POLYGON:           return &pg_types[102];
+               case PG_RECORD:            return &pg_types[103];
+               case PG_REFCURSOR:         return &pg_types[104];
+               case PG_REGCLASS:          return &pg_types[105];
+               case PG_REGCONFIG:         return &pg_types[106];
+               case PG_REGDICTIONARY:     return &pg_types[107];
+               case PG_REGOPER:           return &pg_types[108];
+               case PG_REGOPERATOR:       return &pg_types[109];
+               case PG_REGPROC:           return &pg_types[110];
+               case PG_REGPROCEDURE:      return &pg_types[111];
+               case PG_REGTYPE:           return &pg_types[112];
+               case PG_RELTIME:           return &pg_types[113];
+               case PG_SMGR:              return &pg_types[114];
+               case PG_TEXT:              return &pg_types[115];
+               case PG_TID:               return &pg_types[116];
+               case PG_TIME:              return &pg_types[117];
+               case PG_TIMESTAMP:         return &pg_types[118];
+               case PG_TIMESTAMPTZ:       return &pg_types[119];
+               case PG_TIMETZ:            return &pg_types[120];
+               case PG_TINTERVAL:         return &pg_types[121];
+               case PG_TRIGGER:           return &pg_types[122];
+               case PG_TSQUERY:           return &pg_types[123];
+               case PG_TSVECTOR:          return &pg_types[124];
+               case PG_TXID_SNAPSHOT:     return &pg_types[125];
+               case PG_UNKNOWN:           return &pg_types[126];
+               case PG_UUID:              return &pg_types[127];
+               case PG_VARBIT:            return &pg_types[128];
+               case PG_VARCHAR:           return &pg_types[129];
+               case PG_VOID:              return &pg_types[130];
+               case PG_XID:               return &pg_types[131];
+               case PG_XML:               return &pg_types[132];
                default: return NULL;
        }
 }
@@ -297,10 +301,10 @@
        {SQL_VARBINARY, "SQL_VARBINARY", ',', "none", quote_bytea, 
dequote_bytea, {PG_BYTEA}, 1, 0},
        {SQL_CHAR, "SQL_CHAR", ',', "none", quote_string, dequote_char, 
{PG_CHAR}, 1, 0},
        {SQL_TYPE_DATE, "SQL_TYPE_DATE", ',', "none", quote_string, 
dequote_string, {PG_DATE}, 1, 0},
-       {SQL_REAL, "SQL_REAL", ',', "none", null_quote, null_dequote, 
{PG_FLOAT4}, 1, 2},
-       {SQL_NUMERIC, "SQL_NUMERIC", ',', "none", null_quote, null_dequote, 
{PG_FLOAT4}, 1, 2},
        {SQL_FLOAT, "SQL_FLOAT", ',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 1, 2},
        {SQL_DOUBLE, "SQL_DOUBLE", ',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 1, 2},
+       {SQL_NUMERIC, "SQL_NUMERIC", ',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 1, 2},
+       {SQL_REAL, "SQL_REAL", ',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 1, 2},
        {SQL_SMALLINT, "SQL_SMALLINT", ',', "none", null_quote, null_dequote, 
{PG_INT2}, 1, 1},
        {SQL_TINYINT, "SQL_TINYINT", ',', "none", null_quote, null_dequote, 
{PG_INT2}, 1, 1},
        {SQL_INTEGER, "SQL_INTEGER", ',', "none", null_quote, null_dequote, 
{PG_INT4}, 1, 1},
@@ -323,10 +327,10 @@
                case SQL_VARBINARY:                    return &sql_types[2];
                case SQL_CHAR:                         return &sql_types[3];
                case SQL_TYPE_DATE:                    return &sql_types[4];
-               case SQL_REAL:                         return &sql_types[5];
-               case SQL_NUMERIC:                      return &sql_types[6];
-               case SQL_FLOAT:                        return &sql_types[7];
-               case SQL_DOUBLE:                       return &sql_types[8];
+               case SQL_FLOAT:                        return &sql_types[5];
+               case SQL_DOUBLE:                       return &sql_types[6];
+               case SQL_NUMERIC:                      return &sql_types[7];
+               case SQL_REAL:                         return &sql_types[8];
                case SQL_SMALLINT:                     return &sql_types[9];
                case SQL_TINYINT:                      return &sql_types[10];
                case SQL_INTEGER:                      return &sql_types[11];
@@ -678,8 +682,8 @@
 int2     null_quote    null_dequote    SQL_SMALLINT|SQL_TINYINT  1  1
 int4     null_quote    null_dequote    SQL_INTEGER               1  1
 int8     null_quote    null_dequote    SQL_BIGINT                1  0
-float4   null_quote    null_dequote    SQL_REAL|SQL_NUMERIC      1  2
-float8   null_quote    null_dequote    SQL_FLOAT|SQL_DOUBLE      1  2
+float4   null_quote    null_dequote    0                         1  2
+float8   null_quote    null_dequote    
SQL_FLOAT|SQL_DOUBLE|SQL_NUMERIC|SQL_REAL 1  2
 numeric  null_quote    null_dequote    SQL_DECIMAL               1  2
 oid      null_quote    null_dequote    0                         0  1
 name     null_quote    null_dequote    SQL_VARCHAR               0  0 ## XXX 
Wrong

Modified: DBD-Pg/trunk/types.h
==============================================================================
--- DBD-Pg/trunk/types.h        (original)
+++ DBD-Pg/trunk/types.h        Sun Oct 21 13:12:07 2007
@@ -88,6 +88,7 @@
 #define           PG_TRIGGER  2279
 #define           PG_TSQUERY  3615
 #define          PG_TSVECTOR  3614
+#define     PG_TXID_SNAPSHOT  2970
 #define           PG_UNKNOWN  705
 #define              PG_UUID  2950
 #define            PG_VARBIT  1562
@@ -149,6 +150,7 @@
 #define    PG_TINTERVALARRAY  1025
 #define      PG_TSQUERYARRAY  3645
 #define     PG_TSVECTORARRAY  3643
+#define PG_TXID_SNAPSHOTARRAY  2949
 #define         PG_UUIDARRAY  2951
 #define       PG_VARBITARRAY  1563
 #define      PG_VARCHARARRAY  1015

Reply via email to