[svn:DBD-Pg] r12022 - DBD-Pg/trunk

[email protected]
Newsgroups perl.dbd.pg.changes
Message-ID <[email protected]>
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;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.