package pgx import ( "encoding/binary" ) const ( protocolVersionNumber = 196608 // 3.0 ) const ( backendKeyData = 'K' authenticationX = 'R' readyForQuery = 'Z' rowDescription = 'T' dataRow = 'D' commandComplete = 'C' errorResponse = 'E' ) type startupMessage struct { options map[string]string } func newStartupMessage() *startupMessage { return &startupMessage{map[string]string{}} } func (self *startupMessage) Bytes() (buf []byte) { buf = make([]byte, 8, 128) binary.BigEndian.PutUint32(buf[4:8], uint32(protocolVersionNumber)) for key, value := range self.options { buf = append(buf, key...) buf = append(buf, 0) buf = append(buf, value...) buf = append(buf, 0) } buf = append(buf, ("\000")...) binary.BigEndian.PutUint32(buf[0:4], uint32(len(buf))) return buf } type oid int32 type fieldDescription struct { name string table oid attributeNumber int16 dataType oid dataTypeSize int16 modifier int32 formatCode int16 } type PgError struct { Severity string Code string Message string } func (self PgError) Error() string { return self.Severity + ": " + self.Message + " (SQLSTATE " + self.Code + ")" }