Documentation ¶
Overview ¶
Package sqltypes implements interfaces and types that represent SQL values.
DROPBOX NOTE: This is a modified version of vitess's sqltypes module. The original source can be found at https://code.google.com/p/vitess/
Index ¶
- Constants
- Variables
- func ConvertAssign(src Value, dest interface{}) error
- func ConvertAssignDefault(src Value, dest interface{}, defaultValue interface{}) error
- func ConvertAssignRow(row []Value, dest ...interface{}) error
- func ConvertAssignRowNullable(row []Value, dest ...interface{}) error
- func ConvertIntUnsigned(arg interface{}, columnType string) interface{}
- func Uint64EncodeSql(b encoding2.BinaryWriter, num uint64)
- type Fractional
- type InnerValue
- type Numeric
- type String
- type Value
- func (v Value) EncodeAscii(b encoding2.BinaryWriter)
- func (v Value) EncodeSql(b encoding2.BinaryWriter)
- 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) IsUtf8String() (ok bool)
- func (v Value) MarshalBinary() ([]byte, error)
- func (v Value) Raw() []byte
- func (v Value) String() string
- func (v *Value) UnmarshalBinary(data []byte) error
- type ValueType
Constants ¶
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 ¶
func ConvertAssign ¶
ConvertAssign copies to the '*dest' the value in 'src'. An error is returned if the coping is done between incompatible Value and dest types. 'dest' must be a pointer type. Note that for anything else than *[]byte the value is copied, however if 'dest' is of type *[]byte it will point to same []byte array as 'src.Raw()' (no copying).
func ConvertAssignDefault ¶
ConvertAssign, but with support for default values
func ConvertAssignRow ¶
ConvertAssignRow copies a row of values in the list of destinations. An error is returned if any one of the row's element coping is done between incompatible value and dest types. The list of destinations must contain pointers. Note that for anything else than *[]byte the value is copied, however if the destination is of type *[]byte it will point the same []byte array as the source (no copying).
func ConvertAssignRowNullable ¶
ConverAssignRowNullable is the same as ConvertAssignRow except that it allows nil as a value for the row or any of the row values. In thoses cases, the corresponding values are ignored.
func ConvertIntUnsigned ¶
func ConvertIntUnsigned(arg interface{}, columnType string) interface{}
func Uint64EncodeSql ¶
func Uint64EncodeSql(b encoding2.BinaryWriter, num uint64)
Helper function for converting a uint64 to a string suitable for SQL.
Types ¶
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
func (Fractional) MarshalBinary ¶
func (f Fractional) MarshalBinary() ([]byte, error)
type InnerValue ¶
type InnerValue interface { MarshalBinary() ([]byte, error) // 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) MarshalBinary ¶
type String ¶
type String struct {
// contains filtered or unexported fields
}
String represents any SQL type that needs to be represented using quotes. If isUtf8 is false, it will be hex encoded so it's safe for exception reporting, etc.
func (String) MarshalBinary ¶
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 MakeUtf8String ¶
MakeUtf8String makes a String value from a []byte.
func (Value) EncodeAscii ¶
func (v Value) EncodeAscii(b encoding2.BinaryWriter)
EncodeAscii encodes the value using 7-bit clean ascii bytes.
func (Value) EncodeSql ¶
func (v Value) EncodeSql(b encoding2.BinaryWriter)
EncodeSql encodes the value into an SQL statement. Can be binary.
func (Value) IsFractional ¶
func (Value) IsUtf8String ¶
func (Value) MarshalBinary ¶
MarshalBinary helps implement BinaryMarshaler interface for Value.
func (*Value) UnmarshalBinary ¶
UnmarshalBinary helps implement BinaryUnmarshaler interface for Value.