mirror of
https://github.com/jackc/pgx.git
synced 2025-05-29 10:42:31 +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:
|
case string, *string:
|
||||||
wbuf.WriteInt16(TextFormatCode)
|
wbuf.WriteInt16(TextFormatCode)
|
||||||
default:
|
default:
|
||||||
switch oid {
|
wbuf.WriteInt16(internalNativeGoTypeFormats[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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
35
values.go
35
values.go
@ -77,6 +77,9 @@ const minInt = -maxInt - 1
|
|||||||
// set here.
|
// set here.
|
||||||
var DefaultTypeFormats map[string]int16
|
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() {
|
func init() {
|
||||||
DefaultTypeFormats = map[string]int16{
|
DefaultTypeFormats = map[string]int16{
|
||||||
"_aclitem": TextFormatCode, // Pg's src/backend/utils/adt/acl.c has only in/out (text) not send/recv (bin)
|
"_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,
|
"timestamptz": BinaryFormatCode,
|
||||||
"xid": 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
|
// SerializationError occurs on failure to encode or decode a value
|
||||||
|
Loading…
x
Reference in New Issue
Block a user