mirror of https://github.com/jackc/pgx.git
Remove unused DefaultTypeFormats
parent
ad2ce2ce3c
commit
9e289cb186
23
doc.go
23
doc.go
|
@ -155,25 +155,10 @@ netmask for IPv4 and a /128 for IPv6.
|
|||
Custom Type Support
|
||||
|
||||
pgx includes support for the common data types like integers, floats, strings,
|
||||
dates, and times that have direct mappings between Go and SQL. Support can be
|
||||
added for additional types like point, hstore, numeric, etc. that do not have
|
||||
direct mappings in Go by the types implementing ScannerPgx and Encoder.
|
||||
|
||||
Custom types can support text or binary formats. Binary format can provide a
|
||||
large performance increase. The natural place for deciding the format for a
|
||||
value would be in ScannerPgx as it is responsible for decoding the returned
|
||||
data. However, that is impossible as the query has already been sent by the time
|
||||
the ScannerPgx is invoked. The solution to this is the global
|
||||
DefaultTypeFormats. If a custom type prefers binary format it should register it
|
||||
there.
|
||||
|
||||
pgx.DefaultTypeFormats["point"] = pgx.BinaryFormatCode
|
||||
|
||||
Note that the type is referred to by name, not by Oid. This is because custom
|
||||
PostgreSQL types like hstore will have different Oids on different servers. When
|
||||
pgx establishes a connection it queries the pg_type table for all types. It then
|
||||
matches the names in DefaultTypeFormats with the returned Oids and stores it in
|
||||
Conn.PgTypes.
|
||||
dates, and times that have direct mappings between Go and SQL. In addition,
|
||||
pgx uses the github.com/jackc/pgx/pgtype library to support more types. See
|
||||
documention for that library for instructions on how to implement custom
|
||||
types.
|
||||
|
||||
See example_custom_type_test.go for an example of a custom type for the
|
||||
PostgreSQL point type.
|
||||
|
|
46
values.go
46
values.go
|
@ -64,52 +64,6 @@ const maxUint = ^uint(0)
|
|||
const maxInt = int(maxUint >> 1)
|
||||
const minInt = -maxInt - 1
|
||||
|
||||
// DefaultTypeFormats maps type names to their default requested format (text
|
||||
// or binary). In theory the Scanner interface should be the one to determine
|
||||
// the format of the returned values. However, the query has already been
|
||||
// executed by the time Scan is called so it has no chance to set the format.
|
||||
// So for types that should always be returned in binary the format should be
|
||||
// set here.
|
||||
var DefaultTypeFormats map[string]int16
|
||||
|
||||
func init() {
|
||||
DefaultTypeFormats = map[string]int16{
|
||||
"_aclitem": TextFormatCode, // Pg's src/backend/utils/adt/acl.c has only in/out (text) not send/recv (bin)
|
||||
"_bool": BinaryFormatCode,
|
||||
"_bytea": BinaryFormatCode,
|
||||
"_cidr": BinaryFormatCode,
|
||||
"_float4": BinaryFormatCode,
|
||||
"_float8": BinaryFormatCode,
|
||||
"_inet": BinaryFormatCode,
|
||||
"_int2": BinaryFormatCode,
|
||||
"_int4": BinaryFormatCode,
|
||||
"_int8": BinaryFormatCode,
|
||||
"_text": BinaryFormatCode,
|
||||
"_timestamp": BinaryFormatCode,
|
||||
"_timestamptz": BinaryFormatCode,
|
||||
"_varchar": BinaryFormatCode,
|
||||
"aclitem": TextFormatCode, // Pg's src/backend/utils/adt/acl.c has only in/out (text) not send/recv (bin)
|
||||
"bool": BinaryFormatCode,
|
||||
"bytea": BinaryFormatCode,
|
||||
"char": BinaryFormatCode,
|
||||
"cid": BinaryFormatCode,
|
||||
"cidr": BinaryFormatCode,
|
||||
"date": BinaryFormatCode,
|
||||
"float4": BinaryFormatCode,
|
||||
"float8": BinaryFormatCode,
|
||||
"inet": BinaryFormatCode,
|
||||
"int2": BinaryFormatCode,
|
||||
"int4": BinaryFormatCode,
|
||||
"int8": BinaryFormatCode,
|
||||
"oid": BinaryFormatCode,
|
||||
"record": BinaryFormatCode,
|
||||
"tid": BinaryFormatCode,
|
||||
"timestamp": BinaryFormatCode,
|
||||
"timestamptz": BinaryFormatCode,
|
||||
"xid": BinaryFormatCode,
|
||||
}
|
||||
}
|
||||
|
||||
// SerializationError occurs on failure to encode or decode a value
|
||||
type SerializationError string
|
||||
|
||||
|
|
Loading…
Reference in New Issue