Author: turnstep
Date: Sat Nov  1 12:19:55 2008
New Revision: 12022

Modified:
   DBD-Pg/trunk/dbdimp.h
   DBD-Pg/trunk/types.c
   DBD-Pg/trunk/types.h

Log:
struct padding optimizations


Modified: DBD-Pg/trunk/dbdimp.h
==============================================================================
--- DBD-Pg/trunk/dbdimp.h       (original)
+++ DBD-Pg/trunk/dbdimp.h       Sat Nov  1 12:19:55 2008
@@ -18,14 +18,6 @@
 struct imp_dbh_st {
        dbih_dbc_t com;            /* MUST be first element in structure */
 
-       bool    pg_bool_tf;        /* do bools return 't'/'f'? Set by user, 
default is 0 */
-       bool    pg_enable_utf8;    /* should we attempt to make utf8 strings? 
Set by user, default is 0 */
-       bool    prepare_now;       /* force immediate prepares, even with 
placeholders. Set by user, default is 0 */
-       bool    done_begin;        /* have we done a begin? (e.g. are we in a 
transaction?) */
-       bool    dollaronly;        /* only consider $1, $2 ... as valid 
placeholders */
-       bool    expand_array;      /* transform arrays from the db into Perl 
arrays? Default is 1 */
-       bool    txn_read_only;     /* are we in read-only mode? Set with 
$dbh->{ReadOnly} */
-
        int     pg_protocol;       /* value of PQprotocolVersion, usually 3 
(could also be 0) */
        int     pg_server_version; /* server version e.g. 80100 */
        int     pid_number;        /* prefixed before prepare_number */
@@ -39,6 +31,14 @@
        AV      *savepoints;       /* list of savepoints */
        PGconn  *conn;             /* connection structure */
        char    *sqlstate;         /* from the last result */
+
+       bool    pg_bool_tf;        /* do bools return 't'/'f'? Set by user, 
default is 0 */
+       bool    pg_enable_utf8;    /* should we attempt to make utf8 strings? 
Set by user, default is 0 */
+       bool    prepare_now;       /* force immediate prepares, even with 
placeholders. Set by user, default is 0 */
+       bool    done_begin;        /* have we done a begin? (e.g. are we in a 
transaction?) */
+       bool    dollaronly;        /* only consider $1, $2 ... as valid 
placeholders */
+       bool    expand_array;      /* transform arrays from the db into Perl 
arrays? Default is 1 */
+       bool    txn_read_only;     /* are we in read-only mode? Set with 
$dbh->{ReadOnly} */
 };
 
 

Modified: DBD-Pg/trunk/types.c
==============================================================================
--- DBD-Pg/trunk/types.c        (original)
+++ DBD-Pg/trunk/types.c        Sat Nov  1 12:19:55 2008
@@ -17,139 +17,139 @@
 #include "Pg.h"
 
 static sql_type_info_t pg_types[] = {
- {PG_ABSTIMEARRAY      ,"_abstime"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_ACLITEMARRAY      ,"_aclitem"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_BITARRAY          ,"_bit"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_BOOLARRAY         ,"_bool"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_BOXARRAY          ,"_box"             ,';',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_BPCHARARRAY       ,"_bpchar"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_BYTEAARRAY        ,"_bytea"           ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_CHARARRAY         ,"_char"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_CIDARRAY          ,"_cid"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_CIDRARRAY         ,"_cidr"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_CIRCLEARRAY       ,"_circle"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_CSTRINGARRAY      ,"_cstring"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_DATEARRAY         ,"_date"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_FLOAT4ARRAY       ,"_float4"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,2},
- {PG_FLOAT8ARRAY       ,"_float8"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,2},
- {PG_GTSVECTORARRAY    ,"_gtsvector"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_INETARRAY         ,"_inet"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_INT2ARRAY         ,"_int2"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,1},
- {PG_INT2VECTORARRAY   ,"_int2vector"      ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_INT4ARRAY         ,"_int4"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,1},
- {PG_INT8ARRAY         ,"_int8"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_INTERVALARRAY     ,"_interval"        ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_LINEARRAY         ,"_line"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_LSEGARRAY         ,"_lseg"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_MACADDRARRAY      ,"_macaddr"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_MONEYARRAY        ,"_money"           ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_NAMEARRAY         ,"_name"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_NUMERICARRAY      ,"_numeric"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,2},
- {PG_OIDARRAY          ,"_oid"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,1},
- {PG_OIDVECTORARRAY    ,"_oidvector"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_PATHARRAY         ,"_path"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_POINTARRAY        ,"_point"           ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_POLYGONARRAY      ,"_polygon"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REFCURSORARRAY    ,"_refcursor"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGCLASSARRAY     ,"_regclass"        ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGCONFIGARRAY    ,"_regconfig"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGDICTIONARYARRAY,"_regdictionary"   ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGOPERARRAY      ,"_regoper"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGOPERATORARRAY  ,"_regoperator"     ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGPROCARRAY      ,"_regproc"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGPROCEDUREARRAY ,"_regprocedure"    ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_REGTYPEARRAY      ,"_regtype"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_RELTIMEARRAY      ,"_reltime"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TEXTARRAY         ,"_text"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TIDARRAY          ,"_tid"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TIMEARRAY         ,"_time"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TIMESTAMPARRAY    ,"_timestamp"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TIMESTAMPTZARRAY  ,"_timestamptz"     ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TIMETZARRAY       ,"_timetz"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TINTERVALARRAY    ,"_tinterval"       ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TSQUERYARRAY      ,"_tsquery"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TSVECTORARRAY     ,"_tsvector"        ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_TXID_SNAPSHOTARRAY,"_txid_snapshot"   ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_UUIDARRAY         ,"_uuid"            ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_VARBITARRAY       ,"_varbit"          ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_VARCHARARRAY      ,"_varchar"         ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_XIDARRAY          ,"_xid"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_XMLARRAY          ,"_xml"             ,',',"array_out"       
,quote_string,dequote_string,{0},1,0},
- {PG_ABSTIME           ,"abstime"          ,',',"abstimeout"      
,quote_string,dequote_string,{0},1,0},
- {PG_ACLITEM           ,"aclitem"          ,',',"aclitemout"      
,quote_string,dequote_string,{0},1,0},
- {PG_ANY               ,"any"              ,',',"any_out"         
,quote_string,dequote_string,{0},1,0},
- {PG_ANYARRAY          ,"anyarray"         ,',',"anyarray_out"    
,quote_string,dequote_string,{0},1,0},
- {PG_ANYELEMENT        ,"anyelement"       ,',',"anyelement_out"  
,quote_string,dequote_string,{0},1,0},
- {PG_ANYENUM           ,"anyenum"          ,',',"anyenum_out"     
,quote_string,dequote_string,{0},1,0},
- {PG_ANYNONARRAY       ,"anynonarray"      ,',',"anynonarray_out" 
,quote_string,dequote_string,{0},1,0},
- {PG_BIT               ,"bit"              ,',',"bit_out"         
,quote_string,dequote_string,{0},1,0},
- {PG_BOOL              ,"bool"             ,',',"boolout"         ,quote_bool  
,dequote_bool  ,{SQL_BOOLEAN},1,0},
- {PG_BOX               ,"box"              ,';',"box_out"         ,quote_geom  
,dequote_string,{0},1,0},
- {PG_BPCHAR            ,"bpchar"           ,',',"bpcharout"       
,quote_string,dequote_char  ,{SQL_CHAR},1,0},
- {PG_BYTEA             ,"bytea"            ,',',"byteaout"        ,quote_bytea 
,dequote_bytea ,{SQL_VARBINARY},1,0},
- {PG_CHAR              ,"char"             ,',',"charout"         
,quote_string,dequote_char  ,{SQL_CHAR},1,0},
- {PG_CID               ,"cid"              ,',',"cidout"          
,quote_string,dequote_string,{0},1,0},
- {PG_CIDR              ,"cidr"             ,',',"cidr_out"        
,quote_string,dequote_string,{0},1,0},
- {PG_CIRCLE            ,"circle"           ,',',"circle_out"      
,quote_circle,dequote_string,{0},1,0},
- {PG_CSTRING           ,"cstring"          ,',',"cstring_out"     
,quote_string,dequote_string,{0},1,0},
- {PG_DATE              ,"date"             ,',',"date_out"        
,quote_string,dequote_string,{SQL_TYPE_DATE},1,0},
- {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},1,0},
- {PG_INET              ,"inet"             ,',',"inet_out"        
,quote_string,dequote_string,{0},1,0},
- {PG_INT2              ,"int2"             ,',',"int2out"         ,null_quote  
,null_dequote  ,{SQL_SMALLINT},1,1},
- {PG_INT2VECTOR        ,"int2vector"       ,',',"int2vectorout"   
,quote_string,dequote_string,{0},1,0},
- {PG_INT4              ,"int4"             ,',',"int4out"         ,null_quote  
,null_dequote  ,{SQL_INTEGER},1,1},
- {PG_INT8              ,"int8"             ,',',"int8out"         ,null_quote  
,null_dequote  ,{SQL_BIGINT},1,0},
- {PG_INTERNAL          ,"internal"         ,',',"internal_out"    
,quote_string,dequote_string,{0},1,0},
- {PG_INTERVAL          ,"interval"         ,',',"interval_out"    
,quote_string,dequote_string,{0},1,0},
- {PG_LANGUAGE_HANDLER  ,"language_handler" 
,',',"language_handler_out",quote_string,dequote_string,{0},1,0},
- {PG_LINE              ,"line"             ,',',"line_out"        ,quote_geom  
,dequote_string,{0},1,0},
- {PG_LSEG              ,"lseg"             ,',',"lseg_out"        ,quote_geom  
,dequote_string,{0},1,0},
- {PG_MACADDR           ,"macaddr"          ,',',"macaddr_out"     
,quote_string,dequote_string,{0},1,0},
- {PG_MONEY             ,"money"            ,',',"cash_out"        
,quote_string,dequote_string,{0},1,0},
- {PG_NAME              ,"name"             ,',',"nameout"         ,null_quote  
,null_dequote  ,{SQL_VARCHAR},1,0},
- {PG_NUMERIC           ,"numeric"          ,',',"numeric_out"     ,null_quote  
,null_dequote  ,{SQL_DECIMAL},1,2},
- {PG_OID               ,"oid"              ,',',"oidout"          ,null_quote  
,null_dequote  ,{0},1,1},
- {PG_OIDVECTOR         ,"oidvector"        ,',',"oidvectorout"    
,quote_string,dequote_string,{0},1,0},
- {PG_OPAQUE            ,"opaque"           ,',',"opaque_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_PATH              ,"path"             ,',',"path_out"        ,quote_path  
,dequote_string,{0},1,0},
- {PG_PG_ATTRIBUTE      ,"pg_attribute"     ,',',"record_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_PG_CLASS          ,"pg_class"         ,',',"record_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_PG_PROC           ,"pg_proc"          ,',',"record_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_PG_TYPE           ,"pg_type"          ,',',"record_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_POINT             ,"point"            ,',',"point_out"       ,quote_geom  
,dequote_string,{0},1,0},
- {PG_POLYGON           ,"polygon"          ,',',"poly_out"        ,quote_geom  
,dequote_string,{0},1,0},
- {PG_RECORD            ,"record"           ,',',"record_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_REFCURSOR         ,"refcursor"        ,',',"textout"         
,quote_string,dequote_string,{0},1,0},
- {PG_REGCLASS          ,"regclass"         ,',',"regclassout"     
,quote_string,dequote_string,{0},1,0},
- {PG_REGCONFIG         ,"regconfig"        ,',',"regconfigout"    
,quote_string,dequote_string,{0},1,0},
- {PG_REGDICTIONARY     ,"regdictionary"    
,',',"regdictionaryout",quote_string,dequote_string,{0},1,0},
- {PG_REGOPER           ,"regoper"          ,',',"regoperout"      
,quote_string,dequote_string,{0},1,0},
- {PG_REGOPERATOR       ,"regoperator"      ,',',"regoperatorout"  
,quote_string,dequote_string,{0},1,0},
- {PG_REGPROC           ,"regproc"          ,',',"regprocout"      
,quote_string,dequote_string,{0},1,0},
- {PG_REGPROCEDURE      ,"regprocedure"     ,',',"regprocedureout" 
,quote_string,dequote_string,{0},1,0},
- {PG_REGTYPE           ,"regtype"          ,',',"regtypeout"      
,quote_string,dequote_string,{0},1,0},
- {PG_RELTIME           ,"reltime"          ,',',"reltimeout"      
,quote_string,dequote_string,{0},1,0},
- {PG_SMGR              ,"smgr"             ,',',"smgrout"         
,quote_string,dequote_string,{0},1,0},
- {PG_TEXT              ,"text"             ,',',"textout"         
,quote_string,dequote_string,{SQL_LONGVARCHAR},1,0},
- {PG_TID               ,"tid"              ,',',"tidout"          ,quote_geom  
,dequote_string,{0},1,0},
- {PG_TIME              ,"time"             ,',',"time_out"        
,quote_string,dequote_string,{SQL_TYPE_TIME},1,0},
- {PG_TIMESTAMP         ,"timestamp"        ,',',"timestamp_out"   
,quote_string,dequote_string,{SQL_TIMESTAMP},1,0},
- {PG_TIMESTAMPTZ       ,"timestamptz"      ,',',"timestamptz_out" 
,quote_string,dequote_string,{SQL_TYPE_TIMESTAMP_WITH_TIMEZONE},1,0},
- {PG_TIMETZ            ,"timetz"           ,',',"timetz_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_TINTERVAL         ,"tinterval"        ,',',"tintervalout"    
,quote_string,dequote_string,{0},1,0},
- {PG_TRIGGER           ,"trigger"          ,',',"trigger_out"     
,quote_string,dequote_string,{0},1,0},
- {PG_TSQUERY           ,"tsquery"          ,',',"tsqueryout"      
,quote_string,dequote_string,{0},1,0},
- {PG_TSVECTOR          ,"tsvector"         ,',',"tsvectorout"     
,quote_string,dequote_string,{0},1,0},
- {PG_TXID_SNAPSHOT     ,"txid_snapshot"    
,',',"txid_snapshot_out",quote_string,dequote_string,{0},1,0},
- {PG_UNKNOWN           ,"unknown"          ,',',"unknownout"      
,quote_string,dequote_string,{0},1,0},
- {PG_UUID              ,"uuid"             ,',',"uuid_out"        
,quote_string,dequote_string,{0},1,0},
- {PG_VARBIT            ,"varbit"           ,',',"varbit_out"      
,quote_string,dequote_string,{0},1,0},
- {PG_VARCHAR           ,"varchar"          ,',',"varcharout"      
,quote_string,dequote_string,{SQL_VARCHAR},1,0},
- {PG_VOID              ,"void"             ,',',"void_out"        
,quote_string,dequote_string,{0},1,0},
- {PG_XID               ,"xid"              ,',',"xidout"          
,quote_string,dequote_string,{0},1,0},
- {PG_XML               ,"xml"              ,',',"xml_out"         
,quote_string,dequote_string,{0},1,0},
+ {PG_ABSTIMEARRAY      ,"_abstime"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_ACLITEMARRAY      ,"_aclitem"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_BITARRAY          ,"_bit"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_BOOLARRAY         ,"_bool"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_BOXARRAY          ,"_box"             ,1,';',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_BPCHARARRAY       ,"_bpchar"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_BYTEAARRAY        ,"_bytea"           ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_CHARARRAY         ,"_char"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_CIDARRAY          ,"_cid"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_CIDRARRAY         ,"_cidr"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_CIRCLEARRAY       ,"_circle"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_CSTRINGARRAY      ,"_cstring"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_DATEARRAY         ,"_date"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_FLOAT4ARRAY       ,"_float4"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
+ {PG_FLOAT8ARRAY       ,"_float8"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
+ {PG_GTSVECTORARRAY    ,"_gtsvector"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_INETARRAY         ,"_inet"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_INT2ARRAY         ,"_int2"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
+ {PG_INT2VECTORARRAY   ,"_int2vector"      ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_INT4ARRAY         ,"_int4"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
+ {PG_INT8ARRAY         ,"_int8"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_INTERVALARRAY     ,"_interval"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_LINEARRAY         ,"_line"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_LSEGARRAY         ,"_lseg"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_MACADDRARRAY      ,"_macaddr"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_MONEYARRAY        ,"_money"           ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_NAMEARRAY         ,"_name"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_NUMERICARRAY      ,"_numeric"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
+ {PG_OIDARRAY          ,"_oid"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
+ {PG_OIDVECTORARRAY    ,"_oidvector"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_PATHARRAY         ,"_path"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_POINTARRAY        ,"_point"           ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_POLYGONARRAY      ,"_polygon"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REFCURSORARRAY    ,"_refcursor"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGCLASSARRAY     ,"_regclass"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGCONFIGARRAY    ,"_regconfig"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGDICTIONARYARRAY,"_regdictionary"   ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGOPERARRAY      ,"_regoper"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGOPERATORARRAY  ,"_regoperator"     ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGPROCARRAY      ,"_regproc"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGPROCEDUREARRAY ,"_regprocedure"    ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_REGTYPEARRAY      ,"_regtype"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_RELTIMEARRAY      ,"_reltime"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TEXTARRAY         ,"_text"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TIDARRAY          ,"_tid"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TIMEARRAY         ,"_time"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TIMESTAMPARRAY    ,"_timestamp"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TIMESTAMPTZARRAY  ,"_timestamptz"     ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TIMETZARRAY       ,"_timetz"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TINTERVALARRAY    ,"_tinterval"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TSQUERYARRAY      ,"_tsquery"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TSVECTORARRAY     ,"_tsvector"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TXID_SNAPSHOTARRAY,"_txid_snapshot"   ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_UUIDARRAY         ,"_uuid"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_VARBITARRAY       ,"_varbit"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_VARCHARARRAY      ,"_varchar"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_XIDARRAY          ,"_xid"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_XMLARRAY          ,"_xml"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_ABSTIME           ,"abstime"          ,1,',',"abstimeout"      
,quote_string,dequote_string,{0},0},
+ {PG_ACLITEM           ,"aclitem"          ,1,',',"aclitemout"      
,quote_string,dequote_string,{0},0},
+ {PG_ANY               ,"any"              ,1,',',"any_out"         
,quote_string,dequote_string,{0},0},
+ {PG_ANYARRAY          ,"anyarray"         ,1,',',"anyarray_out"    
,quote_string,dequote_string,{0},0},
+ {PG_ANYELEMENT        ,"anyelement"       ,1,',',"anyelement_out"  
,quote_string,dequote_string,{0},0},
+ {PG_ANYENUM           ,"anyenum"          ,1,',',"anyenum_out"     
,quote_string,dequote_string,{0},0},
+ {PG_ANYNONARRAY       ,"anynonarray"      ,1,',',"anynonarray_out" 
,quote_string,dequote_string,{0},0},
+ {PG_BIT               ,"bit"              ,1,',',"bit_out"         
,quote_string,dequote_string,{0},0},
+ {PG_BOOL              ,"bool"             ,1,',',"boolout"         
,quote_bool  ,dequote_bool  ,{SQL_BOOLEAN},0},
+ {PG_BOX               ,"box"              ,1,';',"box_out"         
,quote_geom  ,dequote_string,{0},0},
+ {PG_BPCHAR            ,"bpchar"           ,1,',',"bpcharout"       
,quote_string,dequote_char  ,{SQL_CHAR},0},
+ {PG_BYTEA             ,"bytea"            ,1,',',"byteaout"        
,quote_bytea ,dequote_bytea ,{SQL_VARBINARY},0},
+ {PG_CHAR              ,"char"             ,1,',',"charout"         
,quote_string,dequote_char  ,{SQL_CHAR},0},
+ {PG_CID               ,"cid"              ,1,',',"cidout"          
,quote_string,dequote_string,{0},0},
+ {PG_CIDR              ,"cidr"             ,1,',',"cidr_out"        
,quote_string,dequote_string,{0},0},
+ {PG_CIRCLE            ,"circle"           ,1,',',"circle_out"      
,quote_circle,dequote_string,{0},0},
+ {PG_CSTRING           ,"cstring"          ,1,',',"cstring_out"     
,quote_string,dequote_string,{0},0},
+ {PG_DATE              ,"date"             ,1,',',"date_out"        
,quote_string,dequote_string,{SQL_TYPE_DATE},0},
+ {PG_FLOAT4            ,"float4"           ,1,',',"float4out"       
,null_quote  ,null_dequote  ,{0},2},
+ {PG_FLOAT8            ,"float8"           ,1,',',"float8out"       
,null_quote  ,null_dequote  ,{SQL_FLOAT},2},
+ {PG_GTSVECTOR         ,"gtsvector"        ,1,',',"gtsvectorout"    
,quote_string,dequote_string,{0},0},
+ {PG_INET              ,"inet"             ,1,',',"inet_out"        
,quote_string,dequote_string,{0},0},
+ {PG_INT2              ,"int2"             ,1,',',"int2out"         
,null_quote  ,null_dequote  ,{SQL_SMALLINT},1},
+ {PG_INT2VECTOR        ,"int2vector"       ,1,',',"int2vectorout"   
,quote_string,dequote_string,{0},0},
+ {PG_INT4              ,"int4"             ,1,',',"int4out"         
,null_quote  ,null_dequote  ,{SQL_INTEGER},1},
+ {PG_INT8              ,"int8"             ,1,',',"int8out"         
,null_quote  ,null_dequote  ,{SQL_BIGINT},0},
+ {PG_INTERNAL          ,"internal"         ,1,',',"internal_out"    
,quote_string,dequote_string,{0},0},
+ {PG_INTERVAL          ,"interval"         ,1,',',"interval_out"    
,quote_string,dequote_string,{0},0},
+ {PG_LANGUAGE_HANDLER  ,"language_handler" 
,1,',',"language_handler_out",quote_string,dequote_string,{0},0},
+ {PG_LINE              ,"line"             ,1,',',"line_out"        
,quote_geom  ,dequote_string,{0},0},
+ {PG_LSEG              ,"lseg"             ,1,',',"lseg_out"        
,quote_geom  ,dequote_string,{0},0},
+ {PG_MACADDR           ,"macaddr"          ,1,',',"macaddr_out"     
,quote_string,dequote_string,{0},0},
+ {PG_MONEY             ,"money"            ,1,',',"cash_out"        
,quote_string,dequote_string,{0},0},
+ {PG_NAME              ,"name"             ,1,',',"nameout"         
,null_quote  ,null_dequote  ,{SQL_VARCHAR},0},
+ {PG_NUMERIC           ,"numeric"          ,1,',',"numeric_out"     
,null_quote  ,null_dequote  ,{SQL_DECIMAL},2},
+ {PG_OID               ,"oid"              ,1,',',"oidout"          
,null_quote  ,null_dequote  ,{0},1},
+ {PG_OIDVECTOR         ,"oidvector"        ,1,',',"oidvectorout"    
,quote_string,dequote_string,{0},0},
+ {PG_OPAQUE            ,"opaque"           ,1,',',"opaque_out"      
,quote_string,dequote_string,{0},0},
+ {PG_PATH              ,"path"             ,1,',',"path_out"        
,quote_path  ,dequote_string,{0},0},
+ {PG_PG_ATTRIBUTE      ,"pg_attribute"     ,1,',',"record_out"      
,quote_string,dequote_string,{0},0},
+ {PG_PG_CLASS          ,"pg_class"         ,1,',',"record_out"      
,quote_string,dequote_string,{0},0},
+ {PG_PG_PROC           ,"pg_proc"          ,1,',',"record_out"      
,quote_string,dequote_string,{0},0},
+ {PG_PG_TYPE           ,"pg_type"          ,1,',',"record_out"      
,quote_string,dequote_string,{0},0},
+ {PG_POINT             ,"point"            ,1,',',"point_out"       
,quote_geom  ,dequote_string,{0},0},
+ {PG_POLYGON           ,"polygon"          ,1,',',"poly_out"        
,quote_geom  ,dequote_string,{0},0},
+ {PG_RECORD            ,"record"           ,1,',',"record_out"      
,quote_string,dequote_string,{0},0},
+ {PG_REFCURSOR         ,"refcursor"        ,1,',',"textout"         
,quote_string,dequote_string,{0},0},
+ {PG_REGCLASS          ,"regclass"         ,1,',',"regclassout"     
,quote_string,dequote_string,{0},0},
+ {PG_REGCONFIG         ,"regconfig"        ,1,',',"regconfigout"    
,quote_string,dequote_string,{0},0},
+ {PG_REGDICTIONARY     ,"regdictionary"    
,1,',',"regdictionaryout",quote_string,dequote_string,{0},0},
+ {PG_REGOPER           ,"regoper"          ,1,',',"regoperout"      
,quote_string,dequote_string,{0},0},
+ {PG_REGOPERATOR       ,"regoperator"      ,1,',',"regoperatorout"  
,quote_string,dequote_string,{0},0},
+ {PG_REGPROC           ,"regproc"          ,1,',',"regprocout"      
,quote_string,dequote_string,{0},0},
+ {PG_REGPROCEDURE      ,"regprocedure"     ,1,',',"regprocedureout" 
,quote_string,dequote_string,{0},0},
+ {PG_REGTYPE           ,"regtype"          ,1,',',"regtypeout"      
,quote_string,dequote_string,{0},0},
+ {PG_RELTIME           ,"reltime"          ,1,',',"reltimeout"      
,quote_string,dequote_string,{0},0},
+ {PG_SMGR              ,"smgr"             ,1,',',"smgrout"         
,quote_string,dequote_string,{0},0},
+ {PG_TEXT              ,"text"             ,1,',',"textout"         
,quote_string,dequote_string,{SQL_LONGVARCHAR},0},
+ {PG_TID               ,"tid"              ,1,',',"tidout"          
,quote_geom  ,dequote_string,{0},0},
+ {PG_TIME              ,"time"             ,1,',',"time_out"        
,quote_string,dequote_string,{SQL_TYPE_TIME},0},
+ {PG_TIMESTAMP         ,"timestamp"        ,1,',',"timestamp_out"   
,quote_string,dequote_string,{SQL_TIMESTAMP},0},
+ {PG_TIMESTAMPTZ       ,"timestamptz"      ,1,',',"timestamptz_out" 
,quote_string,dequote_string,{SQL_TYPE_TIMESTAMP_WITH_TIMEZONE},0},
+ {PG_TIMETZ            ,"timetz"           ,1,',',"timetz_out"      
,quote_string,dequote_string,{0},0},
+ {PG_TINTERVAL         ,"tinterval"        ,1,',',"tintervalout"    
,quote_string,dequote_string,{0},0},
+ {PG_TRIGGER           ,"trigger"          ,1,',',"trigger_out"     
,quote_string,dequote_string,{0},0},
+ {PG_TSQUERY           ,"tsquery"          ,1,',',"tsqueryout"      
,quote_string,dequote_string,{0},0},
+ {PG_TSVECTOR          ,"tsvector"         ,1,',',"tsvectorout"     
,quote_string,dequote_string,{0},0},
+ {PG_TXID_SNAPSHOT     ,"txid_snapshot"    
,1,',',"txid_snapshot_out",quote_string,dequote_string,{0},0},
+ {PG_UNKNOWN           ,"unknown"          ,1,',',"unknownout"      
,quote_string,dequote_string,{0},0},
+ {PG_UUID              ,"uuid"             ,1,',',"uuid_out"        
,quote_string,dequote_string,{0},0},
+ {PG_VARBIT            ,"varbit"           ,1,',',"varbit_out"      
,quote_string,dequote_string,{0},0},
+ {PG_VARCHAR           ,"varchar"          ,1,',',"varcharout"      
,quote_string,dequote_string,{SQL_VARCHAR},0},
+ {PG_VOID              ,"void"             ,1,',',"void_out"        
,quote_string,dequote_string,{0},0},
+ {PG_XID               ,"xid"              ,1,',',"xidout"          
,quote_string,dequote_string,{0},0},
+ {PG_XML               ,"xml"              ,1,',',"xml_out"         
,quote_string,dequote_string,{0},0},
 };
 
 sql_type_info_t* pg_type_data(int sql_type)
@@ -296,28 +296,28 @@
 }
 
 static sql_type_info_t sql_types[] = {
- {SQL_BOOLEAN,"SQL_BOOLEAN",',', "none", quote_bool, dequote_bool, {PG_BOOL}, 
1, 0},
- {SQL_CHAR,"SQL_CHAR",',', "none", quote_string, dequote_char, {PG_BPCHAR}, 1, 
0},
- {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_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},
- {SQL_BIGINT,"SQL_BIGINT",',', "none", null_quote, null_dequote, {PG_INT8}, 1, 
0},
- {SQL_VARCHAR,"SQL_VARCHAR",',', "none", null_quote, null_dequote, {PG_NAME}, 
1, 0},
- {SQL_DECIMAL,"SQL_DECIMAL",',', "none", null_quote, null_dequote, 
{PG_NUMERIC}, 1, 2},
- {SQL_LONGVARCHAR,"SQL_LONGVARCHAR",',', "none", quote_string, dequote_string, 
{PG_TEXT}, 1, 0},
- {SQL_TYPE_TIME,"SQL_TYPE_TIME",',', "none", quote_string, dequote_string, 
{PG_TIME}, 1, 0},
- {SQL_TIMESTAMP,"SQL_TIMESTAMP",',', "none", quote_string, dequote_string, 
{PG_TIMESTAMP}, 1, 0},
- {SQL_TYPE_TIMESTAMP,"SQL_TYPE_TIMESTAMP",',', "none", quote_string, 
dequote_string, {PG_TIMESTAMP}, 1, 0},
- {SQL_TYPE_TIMESTAMP_WITH_TIMEZONE,"SQL_TYPE_TIMESTAMP_WITH_TIMEZONE",',', 
"none", quote_string, dequote_string, {PG_TIMESTAMPTZ}, 1, 0},
- {SQL_TYPE_TIME_WITH_TIMEZONE,"SQL_TYPE_TIME_WITH_TIMEZONE",',', "none", 
quote_string, dequote_string, {PG_TIMESTAMPTZ}, 1, 0},
- {SQL_VARCHAR,"SQL_VARCHAR",',', "none", quote_string, dequote_string, 
{PG_VARCHAR}, 1, 0},
+ {SQL_BOOLEAN,"SQL_BOOLEAN",1,',', "none", quote_bool, dequote_bool, 
{PG_BOOL}, 0},
+ {SQL_CHAR,"SQL_CHAR",1,',', "none", quote_string, dequote_char, {PG_BPCHAR}, 
0},
+ {SQL_VARBINARY,"SQL_VARBINARY",1,',', "none", quote_bytea, dequote_bytea, 
{PG_BYTEA}, 0},
+ {SQL_CHAR,"SQL_CHAR",1,',', "none", quote_string, dequote_char, {PG_CHAR}, 0},
+ {SQL_TYPE_DATE,"SQL_TYPE_DATE",1,',', "none", quote_string, dequote_string, 
{PG_DATE}, 0},
+ {SQL_FLOAT,"SQL_FLOAT",1,',', "none", null_quote, null_dequote, {PG_FLOAT8}, 
2},
+ {SQL_DOUBLE,"SQL_DOUBLE",1,',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 2},
+ {SQL_NUMERIC,"SQL_NUMERIC",1,',', "none", null_quote, null_dequote, 
{PG_FLOAT8}, 2},
+ {SQL_REAL,"SQL_REAL",1,',', "none", null_quote, null_dequote, {PG_FLOAT8}, 2},
+ {SQL_SMALLINT,"SQL_SMALLINT",1,',', "none", null_quote, null_dequote, 
{PG_INT2}, 1},
+ {SQL_TINYINT,"SQL_TINYINT",1,',', "none", null_quote, null_dequote, 
{PG_INT2}, 1},
+ {SQL_INTEGER,"SQL_INTEGER",1,',', "none", null_quote, null_dequote, 
{PG_INT4}, 1},
+ {SQL_BIGINT,"SQL_BIGINT",1,',', "none", null_quote, null_dequote, {PG_INT8}, 
0},
+ {SQL_VARCHAR,"SQL_VARCHAR",1,',', "none", null_quote, null_dequote, 
{PG_NAME}, 0},
+ {SQL_DECIMAL,"SQL_DECIMAL",1,',', "none", null_quote, null_dequote, 
{PG_NUMERIC}, 2},
+ {SQL_LONGVARCHAR,"SQL_LONGVARCHAR",1,',', "none", quote_string, 
dequote_string, {PG_TEXT}, 0},
+ {SQL_TYPE_TIME,"SQL_TYPE_TIME",1,',', "none", quote_string, dequote_string, 
{PG_TIME}, 0},
+ {SQL_TIMESTAMP,"SQL_TIMESTAMP",1,',', "none", quote_string, dequote_string, 
{PG_TIMESTAMP}, 0},
+ {SQL_TYPE_TIMESTAMP,"SQL_TYPE_TIMESTAMP",1,',', "none", quote_string, 
dequote_string, {PG_TIMESTAMP}, 0},
+ {SQL_TYPE_TIMESTAMP_WITH_TIMEZONE,"SQL_TYPE_TIMESTAMP_WITH_TIMEZONE",1,',', 
"none", quote_string, dequote_string, {PG_TIMESTAMPTZ}, 0},
+ {SQL_TYPE_TIME_WITH_TIMEZONE,"SQL_TYPE_TIME_WITH_TIMEZONE",1,',', "none", 
quote_string, dequote_string, {PG_TIMESTAMPTZ}, 0},
+ {SQL_VARCHAR,"SQL_VARCHAR",1,',', "none", quote_string, dequote_string, 
{PG_VARCHAR}, 0},
 };
 
 sql_type_info_t* sql_type_data(int sql_type)
@@ -431,6 +431,7 @@
 typedef struct sql_type_info {
        int     type_id;
        char*   type_name;
+       bool    bind_ok;
        char    array_delimeter;
        char*   arrayout;
        char*   (*quote)();
@@ -439,7 +440,6 @@
                        int pg;
                        int sql;
        } type;
-       bool    bind_ok;
        int     svtype;
 } sql_type_info_t;
 
@@ -647,8 +647,8 @@
        my ($sqltype,$quote,$dequote) = (0,0,0);
        (my $sql = $t->{sql}) =~ s{^(\w+).*}{$1};
 
-       printf $newfh qq! {%-*s,%-*s,'%s',%-18s,%-12s,%-14s,\{%s\},%d,%d\},\n!,
-               $maxlen, $t->{define}, $maxlen-2, "\"$name\"", $t->{delim}, 
"\"$t->{textout}\"", $t->{quote}, $t->{dequote}, $sql, 1, $t->{svtype};
+       printf $newfh qq! {%-*s,%-*s,%d,'%s',%-18s,%-12s,%-14s,\{%s\},%d\},\n!,
+               $maxlen, $t->{define}, $maxlen-2, "\"$name\"", 1, $t->{delim}, 
"\"$t->{textout}\"", $t->{quote}, $t->{dequote}, $sql, $t->{svtype};
        $pos{$name} = $item++;
 }
 
@@ -677,7 +677,7 @@
        next unless $pgtype{$name}{sql};
        for my $sql (split /\|/ => $pgtype{$name}{sql}) {
                ## {SQL_VARCHAR, "SQL_VARCHAR", quote_string, dequote_string, 
{VARCHAROID}, DBDPG_TRUE },
-               printf $newfh qq! {%s,"%s",',', "none", $pgtype{$name}{quote}, 
$pgtype{$name}{dequote}, \{$pgtype{$name}{define}\}, 1, 
$pgtype{$name}{svtype}\},\n!, $sql, $sql;
+               printf $newfh qq! {%s,"%s",1,',', "none", 
$pgtype{$name}{quote}, $pgtype{$name}{dequote}, \{$pgtype{$name}{define}\}, 
$pgtype{$name}{svtype}\},\n!, $sql, $sql;
                $maxlen = length $sql if length $sql > $maxlen;
                $pos{$sql} = $item++;
        }

Modified: DBD-Pg/trunk/types.h
==============================================================================
--- DBD-Pg/trunk/types.h        (original)
+++ DBD-Pg/trunk/types.h        Sat Nov  1 12:19:55 2008
@@ -5,6 +5,7 @@
 typedef struct sql_type_info {
        int     type_id;
        char*   type_name;
+       bool    bind_ok;
        char    array_delimeter;
        char*   arrayout;
        char*   (*quote)();
@@ -13,7 +14,6 @@
                        int pg;
                        int sql;
        } type;
-       bool    bind_ok;
        int     svtype;
 } sql_type_info_t;
 

Reply via email to