mirror of
https://github.com/jackc/pgx.git
synced 2025-05-27 17:52:08 +00:00
Refactor huge switch statement
This commit is contained in:
parent
4d56221868
commit
47eda78ea1
7
conn.go
7
conn.go
@ -964,12 +964,7 @@ func (c *Conn) sendPreparedQuery(ps *PreparedStatement, arguments ...interface{}
|
||||
case string, *string:
|
||||
wbuf.WriteInt16(TextFormatCode)
|
||||
default:
|
||||
switch oid {
|
||||
case BoolOID, ByteaOID, Int2OID, Int4OID, Int8OID, Float4OID, Float8OID, TimestampTzOID, TimestampTzArrayOID, TimestampOID, TimestampArrayOID, DateOID, BoolArrayOID, ByteaArrayOID, Int2ArrayOID, Int4ArrayOID, Int8ArrayOID, Float4ArrayOID, Float8ArrayOID, TextArrayOID, VarcharArrayOID, OIDOID, InetOID, CidrOID, InetArrayOID, CidrArrayOID, RecordOID, JSONOID, JSONBOID:
|
||||
wbuf.WriteInt16(BinaryFormatCode)
|
||||
default:
|
||||
wbuf.WriteInt16(TextFormatCode)
|
||||
}
|
||||
wbuf.WriteInt16(internalNativeGoTypeFormats[oid])
|
||||
}
|
||||
}
|
||||
|
||||
|
35
values.go
35
values.go
@ -77,6 +77,9 @@ const minInt = -maxInt - 1
|
||||
// set here.
|
||||
var DefaultTypeFormats map[string]int16
|
||||
|
||||
// internalNativeGoTypeFormats lists the encoding type for native Go types (not handled with Encoder interface)
|
||||
var internalNativeGoTypeFormats map[OID]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)
|
||||
@ -113,6 +116,38 @@ func init() {
|
||||
"timestamptz": BinaryFormatCode,
|
||||
"xid": BinaryFormatCode,
|
||||
}
|
||||
|
||||
internalNativeGoTypeFormats = map[OID]int16{
|
||||
BoolArrayOID: BinaryFormatCode,
|
||||
BoolOID: BinaryFormatCode,
|
||||
ByteaArrayOID: BinaryFormatCode,
|
||||
ByteaOID: BinaryFormatCode,
|
||||
CidrArrayOID: BinaryFormatCode,
|
||||
CidrOID: BinaryFormatCode,
|
||||
DateOID: BinaryFormatCode,
|
||||
Float4ArrayOID: BinaryFormatCode,
|
||||
Float4OID: BinaryFormatCode,
|
||||
Float8ArrayOID: BinaryFormatCode,
|
||||
Float8OID: BinaryFormatCode,
|
||||
InetArrayOID: BinaryFormatCode,
|
||||
InetOID: BinaryFormatCode,
|
||||
Int2ArrayOID: BinaryFormatCode,
|
||||
Int2OID: BinaryFormatCode,
|
||||
Int4ArrayOID: BinaryFormatCode,
|
||||
Int4OID: BinaryFormatCode,
|
||||
Int8ArrayOID: BinaryFormatCode,
|
||||
Int8OID: BinaryFormatCode,
|
||||
JSONBOID: BinaryFormatCode,
|
||||
JSONOID: BinaryFormatCode,
|
||||
OIDOID: BinaryFormatCode,
|
||||
RecordOID: BinaryFormatCode,
|
||||
TextArrayOID: BinaryFormatCode,
|
||||
TimestampArrayOID: BinaryFormatCode,
|
||||
TimestampOID: BinaryFormatCode,
|
||||
TimestampTzArrayOID: BinaryFormatCode,
|
||||
TimestampTzOID: BinaryFormatCode,
|
||||
VarcharArrayOID: BinaryFormatCode,
|
||||
}
|
||||
}
|
||||
|
||||
// SerializationError occurs on failure to encode or decode a value
|
||||
|
Loading…
x
Reference in New Issue
Block a user