octosql: github.com/cube2222/octosql/parser/sqlparser/dependency/sqltypes Index | Files

package sqltypes

import "github.com/cube2222/octosql/parser/sqlparser/dependency/sqltypes"

Package sqltypes implements interfaces and types that represent SQL values.


Package Files

event_token.go proto3.go type.go value.go


const (
    Null      = querypb.Type_NULL_TYPE
    Int8      = querypb.Type_INT8
    Uint8     = querypb.Type_UINT8
    Int16     = querypb.Type_INT16
    Uint16    = querypb.Type_UINT16
    Int24     = querypb.Type_INT24
    Uint24    = querypb.Type_UINT24
    Int32     = querypb.Type_INT32
    Uint32    = querypb.Type_UINT32
    Int64     = querypb.Type_INT64
    Uint64    = querypb.Type_UINT64
    Float32   = querypb.Type_FLOAT32
    Float64   = querypb.Type_FLOAT64
    Timestamp = querypb.Type_TIMESTAMP
    Date      = querypb.Type_DATE
    Time      = querypb.Type_TIME
    Datetime  = querypb.Type_DATETIME
    Year      = querypb.Type_YEAR
    Decimal   = querypb.Type_DECIMAL
    Text      = querypb.Type_TEXT
    Blob      = querypb.Type_BLOB
    VarChar   = querypb.Type_VARCHAR
    VarBinary = querypb.Type_VARBINARY
    Char      = querypb.Type_CHAR
    Binary    = querypb.Type_BINARY
    Bit       = querypb.Type_BIT
    Enum      = querypb.Type_ENUM
    Set       = querypb.Type_SET
    Tuple     = querypb.Type_TUPLE
    Geometry  = querypb.Type_GEOMETRY
    TypeJSON  = querypb.Type_JSON

Vitess data types. These are idiomatically named synonyms for the querypb.Type values.


var (
    // NULL represents the NULL value.
    NULL = Value{}
    // DontEscape tells you if a character should not be escaped.
    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

func EventTokenMinimum Uses

func EventTokenMinimum(ev1, ev2 *querypb.EventToken) *querypb.EventToken

EventTokenMinimum returns an event token that is guaranteed to happen before both provided EventToken objects. Note it doesn't parse the position, but rather only uses the timestamp. This is meant to be used for EventToken objects coming from different source shard.

func IsBinary Uses

func IsBinary(t querypb.Type) bool

IsBinary returns true if querypb.Type is a binary.

func IsFloat Uses

func IsFloat(t querypb.Type) bool

IsFloat returns true is querypb.Type is a floating point.

func IsIntegral Uses

func IsIntegral(t querypb.Type) bool

IsIntegral returns true if querypb.Type is an integral (signed/unsigned) that can be represented using up to 64 binary bits.

func IsQuoted Uses

func IsQuoted(t querypb.Type) bool

IsQuoted returns true if querypb.Type is a quoted text or binary.

func IsSigned Uses

func IsSigned(t querypb.Type) bool

IsSigned returns true if querypb.Type is a signed integral.

func IsText Uses

func IsText(t querypb.Type) bool

IsText returns true if querypb.Type is a text.

func IsUnsigned Uses

func IsUnsigned(t querypb.Type) bool

IsUnsigned returns true if querypb.Type is an unsigned integral. Caution: this is not the same as !IsSigned.

func MySQLToType Uses

func MySQLToType(mysqlType, flags int64) (typ querypb.Type, err error)

MySQLToType computes the vitess type from mysql type and flags.

func RowToProto3 Uses

func RowToProto3(row []Value) *querypb.Row

RowToProto3 converts []Value to proto3.

func RowsToProto3 Uses

func RowsToProto3(rows [][]Value) []*querypb.Row

RowsToProto3 converts [][]Value to proto3.

func TypeToMySQL Uses

func TypeToMySQL(typ querypb.Type) (mysqlType, flags int64)

TypeToMySQL returns the equivalent mysql type and flag for a vitess type.

type BinWriter Uses

type BinWriter interface {
    Write([]byte) (int, error)
    WriteByte(byte) error

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 Value Uses

type Value struct {
    // contains filtered or unexported fields

Value can store any SQL value. If the value represents an integral type, the bytes are always stored as a cannonical representation that matches how MySQL returns such values.

func BuildConverted Uses

func BuildConverted(typ querypb.Type, goval interface{}) (v Value, err error)

BuildConverted is like BuildValue except that it tries to convert a string or []byte to an integral if the target type is an integral. We don't perform other implicit conversions because they're unsafe.

func BuildIntegral Uses

func BuildIntegral(val string) (n Value, err error)

BuildIntegral builds an integral type from a string representaion. The type will be Int64 or Uint64. Int64 will be preferred where possible.

func BuildValue Uses

func BuildValue(goval interface{}) (v Value, err error)

BuildValue builds a value from any go type. sqltype.Value is also allowed.

func MakeString Uses

func MakeString(val []byte) Value

MakeString makes a VarBinary Value.

func MakeTrusted Uses

func MakeTrusted(typ querypb.Type, val []byte) Value

MakeTrusted makes a new Value based on the type. If the value is an integral, then val must be in its cannonical form. This function should only be used if you know the value and type conform to the rules. Every place this function is called, a comment is needed that explains why it's justified. Functions within this package are exempt.

func ValueFromBytes Uses

func ValueFromBytes(typ querypb.Type, val []byte) (v Value, err error)

ValueFromBytes builds a Value using typ and val. It ensures that val matches the requested type. If type is an integral it's converted to a cannonical form. Otherwise, the original representation is preserved.

func (Value) EncodeASCII Uses

func (v Value) EncodeASCII(b BinWriter)

EncodeASCII encodes the value using 7-bit clean ascii bytes.

func (Value) EncodeSQL Uses

func (v Value) EncodeSQL(b BinWriter)

EncodeSQL encodes the value into an SQL statement. Can be binary.

func (Value) IsBinary Uses

func (v Value) IsBinary() bool

IsBinary returns true if Value is binary.

func (Value) IsFloat Uses

func (v Value) IsFloat() bool

IsFloat returns true if Value is a float.

func (Value) IsIntegral Uses

func (v Value) IsIntegral() bool

IsIntegral returns true if Value is an integral.

func (Value) IsNull Uses

func (v Value) IsNull() bool

IsNull returns true if Value is null.

func (Value) IsQuoted Uses

func (v Value) IsQuoted() bool

IsQuoted returns true if Value must be SQL-quoted.

func (Value) IsSigned Uses

func (v Value) IsSigned() bool

IsSigned returns true if Value is a signed integral.

func (Value) IsText Uses

func (v Value) IsText() bool

IsText returns true if Value is a collatable text.

func (Value) IsUnsigned Uses

func (v Value) IsUnsigned() bool

IsUnsigned returns true if Value is an unsigned integral.

func (Value) Len Uses

func (v Value) Len() int

Len returns the length.

func (Value) MarshalJSON Uses

func (v Value) MarshalJSON() ([]byte, error)

MarshalJSON should only be used for testing. It's not a complete implementation.

func (Value) ParseFloat64 Uses

func (v Value) ParseFloat64() (val float64, err error)

ParseFloat64 will parse a Value into an float64. It does not check the type.

func (Value) ParseInt64 Uses

func (v Value) ParseInt64() (val int64, err error)

ParseInt64 will parse a Value into an int64. It does not check the type.

func (Value) ParseUint64 Uses

func (v Value) ParseUint64() (val uint64, err error)

ParseUint64 will parse a Value into a uint64. It does not check the type.

func (Value) Raw Uses

func (v Value) Raw() []byte

Raw returns the raw bytes. All types are currently implemented as []byte. You should avoid using this function. If you do, you should treat the bytes as read-only.

func (Value) String Uses

func (v Value) String() string

String returns the raw value as a string.

func (Value) ToNative Uses

func (v Value) ToNative() interface{}

ToNative converts Value to a native go type. This does not work for sqltypes.Tuple. The function panics if there are inconsistencies.

func (Value) ToProtoValue Uses

func (v Value) ToProtoValue() *querypb.Value

ToProtoValue converts Value to a querypb.Value.

func (Value) Type Uses

func (v Value) Type() querypb.Type

Type returns the type of Value.

func (*Value) UnmarshalJSON Uses

func (v *Value) UnmarshalJSON(b []byte) error

UnmarshalJSON should only be used for testing. It's not a complete implementation.

Package sqltypes imports 8 packages (graph) and is imported by 1 packages. Updated 2019-08-11. Refresh now. Tools for package owners.