Documentation
¶
Overview ¶
Package sqltypes implements interfaces and types that represent SQL values.
Index ¶
- Variables
- func ToStrings(in []CIString) []string
- type BinWriter
- type CIString
- type Fractional
- type InnerValue
- type Numeric
- type String
- type Value
- func (v Value) EncodeAscii(b BinWriter)
- func (v Value) EncodeSql(b BinWriter)
- func (v Value) IsFractional() (ok bool)
- func (v Value) IsNull() bool
- func (v Value) IsNumeric() (ok bool)
- func (v Value) IsString() (ok bool)
- func (v Value) MarshalJSON() ([]byte, error)
- func (v Value) ParseInt64() (val int64, err error)
- func (v Value) ParseUint64() (val uint64, err error)
- func (v Value) Raw() []byte
- func (v Value) String() string
- func (v *Value) UnmarshalJSON(b []byte) error
Constants ¶
This section is empty.
Variables ¶
var ( NULL = Value{} DONTESCAPE = byte(255) )
var SqlDecodeMap [256]byte
SqlDecodeMap is the reverse of SqlEncodeMap
var SqlEncodeMap [256]byte
SqlEncodeMap specifies how to escape binary data with '\'. Complies to http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html
Functions ¶
Types ¶
type BinWriter ¶
BinWriter interface is used for encoding values. Types like bytes.Buffer conform to this interface. We expect the writer objects to be in-memory buffers. So, we don't expect the write operations to fail.
type CIString ¶
type CIString struct {
// contains filtered or unexported fields
}
CIString is an immutable case-insensitive string. It precomputes and stores the lower case version of the string internally. This increases the initial memory cost of the object but saves the CPU (and memory) cost of lowercasing as needed. This should generally trade off favorably because there are many situations where comparisons are performed in a loop against the same object.
func (CIString) Equal ¶
Equal performs a case-insensitive compare. For comparing in a loop, it's beneficial to build a CIString outside the loop and using it to compare with other CIString variables inside the loop.
func (CIString) EqualString ¶
EqualString performs a case-insensitive compare with str. If the input is already lower-cased, it's more efficient to check if s.Lowered()==in.
func (CIString) Lowered ¶
Lowered returns the lower-case value of the string. This function should generally be used only for optimizing comparisons.
func (CIString) MarshalJSON ¶
MarshalJSON marshals into JSON.
func (*CIString) UnmarshalJSON ¶
UnmarshalJSON unmarshals from JSON.
type Fractional ¶
type Fractional []byte
Fractional represents fractional types like float and decimal It's functionally equivalent to Numeric other than how it's constructed
type InnerValue ¶
type InnerValue interface {
// contains filtered or unexported methods
}
InnerValue defines methods that need to be supported by all non-null value types.
type Numeric ¶
type Numeric []byte
Numeric represents non-fractional SQL number.
func (Numeric) MarshalJSON ¶
type String ¶
type String []byte
String represents any SQL type that needs to be represented using quotes.
type Value ¶
type Value struct {
Inner InnerValue
}
Value can store any SQL value. NULL is stored as nil.
func BuildNumeric ¶
BuildNumeric builds a Numeric type that represents any whole number. It normalizes the representation to ensure 1:1 mapping between the number and its representation.
func BuildValue ¶
func MakeFractional ¶
MakeFractional makes a Fractional value from a []byte without validation.
func MakeNumeric ¶
MakeNumeric makes a Numeric from a []byte without validation.
func (Value) EncodeAscii ¶
EncodeAscii encodes the value using 7-bit clean ascii bytes.
func (Value) IsFractional ¶
func (Value) MarshalJSON ¶
MarshalJSON should only be used for testing. It's not a complete implementation.
func (Value) ParseInt64 ¶
ParseInt64 will parse a Numeric value into an int64
func (Value) ParseUint64 ¶
ParseUint64 will parse a Numeric value into a uint64
func (*Value) UnmarshalJSON ¶
UnmarshalJSON should only be used for testing. It's not a complete implementation.