Documentation ¶
Index ¶
- Constants
- Variables
- func ChooseVindexForType(typ querypb.Type) (string, error)
- func LoadFormal(filename string) (*vschemapb.SrvVSchema, error)
- func LoadFormalKeyspace(filename string) (*vschemapb.Keyspace, error)
- func Map(vindex Vindex, vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
- func Register(vindexType string, newVindexFunc NewVindexFunc)
- func ValidateKeyspace(input *vschemapb.Keyspace) error
- func Verify(vindex Vindex, vcursor VCursor, rowsColValues [][]sqltypes.Value, ...) ([]bool, error)
- type AutoIncrement
- type Binary
- func (vind *Binary) Cost() int
- func (vind *Binary) IsUnique() bool
- func (vind *Binary) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *Binary) NeedsVCursor() bool
- func (*Binary) ReverseMap(_ VCursor, ksids [][]byte) ([]sqltypes.Value, error)
- func (vind *Binary) String() string
- func (vind *Binary) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type BinaryMD5
- func (vind *BinaryMD5) Cost() int
- func (vind *BinaryMD5) IsUnique() bool
- func (vind *BinaryMD5) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *BinaryMD5) NeedsVCursor() bool
- func (vind *BinaryMD5) String() string
- func (vind *BinaryMD5) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type ByCost
- type Column
- type ColumnVindex
- type ConsistentLookup
- func (lu *ConsistentLookup) Cost() int
- func (lu ConsistentLookup) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lu ConsistentLookup) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lu *ConsistentLookup) IsUnique() bool
- func (lu *ConsistentLookup) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lu ConsistentLookup) MarshalJSON() ([]byte, error)
- func (lu *ConsistentLookup) NeedsVCursor() bool
- func (lu ConsistentLookup) SetOwnerInfo(keyspace, table string, cols []sqlparser.ColIdent) error
- func (lu ConsistentLookup) String() string
- func (lu ConsistentLookup) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lu ConsistentLookup) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type ConsistentLookupUnique
- func (lu *ConsistentLookupUnique) Cost() int
- func (lu ConsistentLookupUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lu ConsistentLookupUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lu *ConsistentLookupUnique) IsUnique() bool
- func (lu *ConsistentLookupUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lu ConsistentLookupUnique) MarshalJSON() ([]byte, error)
- func (lu *ConsistentLookupUnique) NeedsVCursor() bool
- func (lu ConsistentLookupUnique) SetOwnerInfo(keyspace, table string, cols []sqlparser.ColIdent) error
- func (lu ConsistentLookupUnique) String() string
- func (lu ConsistentLookupUnique) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lu ConsistentLookupUnique) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type Hash
- func (vind *Hash) Cost() int
- func (vind *Hash) IsUnique() bool
- func (vind *Hash) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *Hash) NeedsVCursor() bool
- func (vind *Hash) ReverseMap(_ VCursor, ksids [][]byte) ([]sqltypes.Value, error)
- func (vind *Hash) String() string
- func (vind *Hash) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type Keyspace
- type KeyspaceSchema
- type Lookup
- type LookupHash
- func (lh *LookupHash) Cost() int
- func (lh *LookupHash) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lh *LookupHash) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lh *LookupHash) IsUnique() bool
- func (lh *LookupHash) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lh *LookupHash) MarshalJSON() ([]byte, error)
- func (lh *LookupHash) NeedsVCursor() bool
- func (lh *LookupHash) String() string
- func (lh *LookupHash) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lh *LookupHash) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type LookupHashUnique
- func (lhu *LookupHashUnique) Cost() int
- func (lhu *LookupHashUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lhu *LookupHashUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lhu *LookupHashUnique) IsUnique() bool
- func (lhu *LookupHashUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lhu *LookupHashUnique) MarshalJSON() ([]byte, error)
- func (lhu *LookupHashUnique) NeedsVCursor() bool
- func (lhu *LookupHashUnique) String() string
- func (lhu *LookupHashUnique) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lhu *LookupHashUnique) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type LookupNonUnique
- func (ln *LookupNonUnique) Cost() int
- func (ln *LookupNonUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (ln *LookupNonUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (ln *LookupNonUnique) IsUnique() bool
- func (ln *LookupNonUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (ln *LookupNonUnique) MarshalJSON() ([]byte, error)
- func (ln *LookupNonUnique) NeedsVCursor() bool
- func (ln *LookupNonUnique) String() string
- func (ln *LookupNonUnique) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (ln *LookupNonUnique) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type LookupUnicodeLooseMD5Hash
- func (lh *LookupUnicodeLooseMD5Hash) Cost() int
- func (lh *LookupUnicodeLooseMD5Hash) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lh *LookupUnicodeLooseMD5Hash) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lh *LookupUnicodeLooseMD5Hash) IsUnique() bool
- func (lh *LookupUnicodeLooseMD5Hash) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lh *LookupUnicodeLooseMD5Hash) MarshalJSON() ([]byte, error)
- func (lh *LookupUnicodeLooseMD5Hash) NeedsVCursor() bool
- func (lh *LookupUnicodeLooseMD5Hash) String() string
- func (lh *LookupUnicodeLooseMD5Hash) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lh *LookupUnicodeLooseMD5Hash) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type LookupUnicodeLooseMD5HashUnique
- func (lhu *LookupUnicodeLooseMD5HashUnique) Cost() int
- func (lhu *LookupUnicodeLooseMD5HashUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lhu *LookupUnicodeLooseMD5HashUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lhu *LookupUnicodeLooseMD5HashUnique) IsUnique() bool
- func (lhu *LookupUnicodeLooseMD5HashUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lhu *LookupUnicodeLooseMD5HashUnique) MarshalJSON() ([]byte, error)
- func (lhu *LookupUnicodeLooseMD5HashUnique) NeedsVCursor() bool
- func (lhu *LookupUnicodeLooseMD5HashUnique) String() string
- func (lhu *LookupUnicodeLooseMD5HashUnique) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lhu *LookupUnicodeLooseMD5HashUnique) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type LookupUnique
- func (lu *LookupUnique) Cost() int
- func (lu *LookupUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ...) error
- func (lu *LookupUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
- func (lu *LookupUnique) IsUnique() bool
- func (lu *LookupUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (lu *LookupUnique) MarshalJSON() ([]byte, error)
- func (lu *LookupUnique) NeedsVCursor() bool
- func (lu *LookupUnique) String() string
- func (lu *LookupUnique) Update(vcursor VCursor, oldValues []sqltypes.Value, ksid []byte, ...) error
- func (lu *LookupUnique) Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type MultiColumn
- type NewVindexFunc
- type Null
- func (vind *Null) Cost() int
- func (vind *Null) IsUnique() bool
- func (vind *Null) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *Null) NeedsVCursor() bool
- func (vind *Null) String() string
- func (vind *Null) Verify(cursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type Numeric
- func (*Numeric) Cost() int
- func (*Numeric) IsUnique() bool
- func (*Numeric) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (*Numeric) NeedsVCursor() bool
- func (*Numeric) ReverseMap(_ VCursor, ksids [][]byte) ([]sqltypes.Value, error)
- func (vind *Numeric) String() string
- func (*Numeric) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type NumericLookupTable
- type NumericStaticMap
- func (*NumericStaticMap) Cost() int
- func (vind *NumericStaticMap) IsUnique() bool
- func (vind *NumericStaticMap) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *NumericStaticMap) NeedsVCursor() bool
- func (vind *NumericStaticMap) String() string
- func (vind *NumericStaticMap) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type RegionExperimental
- func (ge *RegionExperimental) Cost() int
- func (ge *RegionExperimental) IsUnique() bool
- func (ge *RegionExperimental) Map(vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
- func (ge *RegionExperimental) NeedsVCursor() bool
- func (ge *RegionExperimental) String() string
- func (ge *RegionExperimental) Verify(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte) ([]bool, error)
- type RegionJSON
- func (rv *RegionJSON) Cost() int
- func (rv *RegionJSON) IsUnique() bool
- func (rv *RegionJSON) Map(vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
- func (rv *RegionJSON) NeedsVCursor() bool
- func (rv *RegionJSON) String() string
- func (rv *RegionJSON) Verify(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte) ([]bool, error)
- type RegionMap
- type ReverseBits
- func (vind *ReverseBits) Cost() int
- func (vind *ReverseBits) IsUnique() bool
- func (vind *ReverseBits) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *ReverseBits) NeedsVCursor() bool
- func (vind *ReverseBits) ReverseMap(_ VCursor, ksids [][]byte) ([]sqltypes.Value, error)
- func (vind *ReverseBits) String() string
- func (vind *ReverseBits) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type Reversible
- type RoutingRule
- type SingleColumn
- type Table
- type UnicodeLooseMD5
- func (vind *UnicodeLooseMD5) Cost() int
- func (vind *UnicodeLooseMD5) IsUnique() bool
- func (vind *UnicodeLooseMD5) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *UnicodeLooseMD5) NeedsVCursor() bool
- func (vind *UnicodeLooseMD5) String() string
- func (vind *UnicodeLooseMD5) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type UnicodeLooseXXHash
- func (vind *UnicodeLooseXXHash) Cost() int
- func (vind *UnicodeLooseXXHash) IsUnique() bool
- func (vind *UnicodeLooseXXHash) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *UnicodeLooseXXHash) NeedsVCursor() bool
- func (vind *UnicodeLooseXXHash) String() string
- func (vind *UnicodeLooseXXHash) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
- type VCursor
- type VSchema
- type Vindex
- func CreateVindex(vindexType, name string, params map[string]string) (Vindex, error)
- func NewBinary(name string, _ map[string]string) (Vindex, error)
- func NewBinaryMD5(name string, _ map[string]string) (Vindex, error)
- func NewConsistentLookup(name string, m map[string]string) (Vindex, error)
- func NewConsistentLookupUnique(name string, m map[string]string) (Vindex, error)
- func NewHash(name string, m map[string]string) (Vindex, error)
- func NewLookup(name string, m map[string]string) (Vindex, error)
- func NewLookupHash(name string, m map[string]string) (Vindex, error)
- func NewLookupHashUnique(name string, m map[string]string) (Vindex, error)
- func NewLookupUnicodeLooseMD5Hash(name string, m map[string]string) (Vindex, error)
- func NewLookupUnicodeLooseMD5HashUnique(name string, m map[string]string) (Vindex, error)
- func NewLookupUnique(name string, m map[string]string) (Vindex, error)
- func NewNull(name string, m map[string]string) (Vindex, error)
- func NewNumeric(name string, _ map[string]string) (Vindex, error)
- func NewNumericStaticMap(name string, params map[string]string) (Vindex, error)
- func NewRegionExperimental(name string, m map[string]string) (Vindex, error)
- func NewRegionJSON(name string, m map[string]string) (Vindex, error)
- func NewReverseBits(name string, m map[string]string) (Vindex, error)
- func NewUnicodeLooseMD5(name string, _ map[string]string) (Vindex, error)
- func NewUnicodeLooseXXHash(name string, _ map[string]string) (Vindex, error)
- func NewXXHash(name string, m map[string]string) (Vindex, error)
- type WantOwnerInfo
- type XXHash
- func (vind *XXHash) Cost() int
- func (vind *XXHash) IsUnique() bool
- func (vind *XXHash) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
- func (vind *XXHash) NeedsVCursor() bool
- func (vind *XXHash) String() string
- func (vind *XXHash) Verify(_ VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error)
Constants ¶
const ( TypeSequence = "sequence" TypeReference = "reference" )
The following constants represent table types.
Variables ¶
var TabletTypeSuffix = map[topodatapb.TabletType]string{
0: "@unknown",
1: "@master",
2: "@replica",
3: "@rdonly",
4: "@spare",
5: "@experimental",
6: "@backup",
7: "@restore",
8: "@drained",
}
TabletTypeSuffix maps the tablet type to its suffix string.
Functions ¶
func ChooseVindexForType ¶
ChooseVindexForType chooses the most appropriate vindex for the give type.
func LoadFormal ¶
func LoadFormal(filename string) (*vschemapb.SrvVSchema, error)
LoadFormal loads the JSON representation of VSchema from a file.
func LoadFormalKeyspace ¶
LoadFormalKeyspace loads the JSON representation of VSchema from a file, for a single keyspace.
func Map ¶
func Map(vindex Vindex, vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
Map invokes the Map implementation supplied by the vindex.
func Register ¶
func Register(vindexType string, newVindexFunc NewVindexFunc)
Register registers a vindex under the specified vindexType. A duplicate vindexType will generate a panic. New vindexes will be created using these functions at the time of vschema loading.
func ValidateKeyspace ¶
ValidateKeyspace ensures that the keyspace vschema is valid. External references (like sequence) are not validated.
Types ¶
type AutoIncrement ¶
type AutoIncrement struct { Column sqlparser.ColIdent `json:"column"` Sequence *Table `json:"sequence"` }
AutoIncrement contains the auto-inc information for a table.
type Binary ¶
type Binary struct {
// contains filtered or unexported fields
}
Binary is a vindex that converts binary bits to a keyspace id.
func (*Binary) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
func (*Binary) ReverseMap ¶
ReverseMap returns the associated ids for the ksids.
type BinaryMD5 ¶
type BinaryMD5 struct {
// contains filtered or unexported fields
}
BinaryMD5 is a vindex that hashes binary bits to a keyspace id.
func (*BinaryMD5) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
type ByCost ¶
type ByCost []*ColumnVindex
ByCost provides the interface needed for ColumnVindexes to be sorted by cost order.
type Column ¶
Column describes a column.
func (*Column) MarshalJSON ¶
MarshalJSON returns a JSON representation of Column.
type ColumnVindex ¶
type ColumnVindex struct { Columns []sqlparser.ColIdent `json:"columns"` Type string `json:"type"` Name string `json:"name"` Owned bool `json:"owned,omitempty"` Vindex Vindex `json:"vindex"` }
ColumnVindex contains the index info for each index of a table.
func FindBestColVindex ¶
func FindBestColVindex(table *Table) (*ColumnVindex, error)
FindBestColVindex finds the best ColumnVindex for VReplication.
func FindVindexForSharding ¶
func FindVindexForSharding(tableName string, colVindexes []*ColumnVindex) (*ColumnVindex, error)
FindVindexForSharding searches through the given slice to find the lowest cost unique vindex primary vindex is always unique if two have the same cost, use the one that occurs earlier in the definition if the final result is too expensive, return nil
type ConsistentLookup ¶
type ConsistentLookup struct {
// contains filtered or unexported fields
}
ConsistentLookup is a non-unique lookup vindex that can stay consistent with respect to its owner table.
func (*ConsistentLookup) Cost ¶
func (lu *ConsistentLookup) Cost() int
Cost returns the cost of this vindex as 20.
func (ConsistentLookup) Create ¶
func (lu ConsistentLookup) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (ConsistentLookup) Delete ¶
func (lu ConsistentLookup) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*ConsistentLookup) IsUnique ¶
func (lu *ConsistentLookup) IsUnique() bool
IsUnique returns false since the Vindex is non unique.
func (*ConsistentLookup) Map ¶
func (lu *ConsistentLookup) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (ConsistentLookup) MarshalJSON ¶
MarshalJSON returns a JSON representation of clCommon.
func (*ConsistentLookup) NeedsVCursor ¶
func (lu *ConsistentLookup) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (ConsistentLookup) SetOwnerInfo ¶
func (ConsistentLookup) String ¶
func (lu ConsistentLookup) String() string
String returns the name of the vindex.
type ConsistentLookupUnique ¶
type ConsistentLookupUnique struct {
// contains filtered or unexported fields
}
ConsistentLookupUnique defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's Unique and a Lookup.
func (*ConsistentLookupUnique) Cost ¶
func (lu *ConsistentLookupUnique) Cost() int
Cost returns the cost of this vindex as 10.
func (ConsistentLookupUnique) Create ¶
func (lu ConsistentLookupUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (ConsistentLookupUnique) Delete ¶
func (lu ConsistentLookupUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*ConsistentLookupUnique) IsUnique ¶
func (lu *ConsistentLookupUnique) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*ConsistentLookupUnique) Map ¶
func (lu *ConsistentLookupUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (ConsistentLookupUnique) MarshalJSON ¶
MarshalJSON returns a JSON representation of clCommon.
func (*ConsistentLookupUnique) NeedsVCursor ¶
func (lu *ConsistentLookupUnique) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (ConsistentLookupUnique) SetOwnerInfo ¶
func (ConsistentLookupUnique) String ¶
func (lu ConsistentLookupUnique) String() string
String returns the name of the vindex.
type Hash ¶
type Hash struct {
// contains filtered or unexported fields
}
Hash defines vindex that hashes an int64 to a KeyspaceId by using null-key DES hash. It's Unique, Reversible and Functional. Note that at once stage we used a 3DES-based hash here, but for a null key as in our case, they are completely equivalent.
func (*Hash) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
func (*Hash) ReverseMap ¶
ReverseMap returns the ids from ksids.
type KeyspaceSchema ¶
type KeyspaceSchema struct { Keyspace *Keyspace Tables map[string]*Table Vindexes map[string]Vindex Error error }
KeyspaceSchema contains the schema(table) for a keyspace.
func BuildKeyspaceSchema ¶
func BuildKeyspaceSchema(input *vschemapb.Keyspace, keyspace string) (*KeyspaceSchema, error)
BuildKeyspaceSchema builds the vschema portion for one keyspace. The build ignores sequence references because those dependencies can go cross-keyspace.
func (*KeyspaceSchema) MarshalJSON ¶
func (ks *KeyspaceSchema) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of KeyspaceSchema.
type Lookup ¶
type Lookup interface { // Create creates an association between ids and ksids. If ignoreMode // is true, then the Create should ignore dup key errors. Create(vc VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error Delete(vc VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error // Update replaces the mapping of old values with new values for a keyspace id. Update(vc VCursor, oldValues []sqltypes.Value, ksid []byte, newValues []sqltypes.Value) error }
A Lookup vindex is one that needs to lookup a previously stored map to compute the keyspace id from an id. This means that the creation of a lookup vindex entry requires a keyspace id as input. A Lookup vindex need not be unique because the keyspace_id, which must be supplied, can be used to determine the target shard for an insert operation.
type LookupHash ¶
type LookupHash struct {
// contains filtered or unexported fields
}
LookupHash defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's NonUnique and a Lookup. Warning: This Vindex is being depcreated in favor of Lookup
func (*LookupHash) Cost ¶
func (lh *LookupHash) Cost() int
Cost returns the cost of this vindex as 20.
func (*LookupHash) Create ¶
func (lh *LookupHash) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupHash) IsUnique ¶
func (lh *LookupHash) IsUnique() bool
IsUnique returns false since the Vindex is not unique.
func (*LookupHash) Map ¶
func (lh *LookupHash) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupHash) MarshalJSON ¶
func (lh *LookupHash) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupHash.
func (*LookupHash) NeedsVCursor ¶
func (lh *LookupHash) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupHash) String ¶
func (lh *LookupHash) String() string
String returns the name of the vindex.
type LookupHashUnique ¶
type LookupHashUnique struct {
// contains filtered or unexported fields
}
LookupHashUnique defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's Unique and a Lookup. Warning: This Vindex is being depcreated in favor of LookupUnique
func (*LookupHashUnique) Cost ¶
func (lhu *LookupHashUnique) Cost() int
Cost returns the cost of this vindex as 10.
func (*LookupHashUnique) Create ¶
func (lhu *LookupHashUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupHashUnique) Delete ¶
func (lhu *LookupHashUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*LookupHashUnique) IsUnique ¶
func (lhu *LookupHashUnique) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*LookupHashUnique) Map ¶
func (lhu *LookupHashUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupHashUnique) MarshalJSON ¶
func (lhu *LookupHashUnique) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupHashUnique.
func (*LookupHashUnique) NeedsVCursor ¶
func (lhu *LookupHashUnique) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupHashUnique) String ¶
func (lhu *LookupHashUnique) String() string
String returns the name of the vindex.
type LookupNonUnique ¶
type LookupNonUnique struct {
// contains filtered or unexported fields
}
LookupNonUnique defines a vindex that uses a lookup table and create a mapping between from ids and KeyspaceId. It's NonUnique and a Lookup.
func (*LookupNonUnique) Cost ¶
func (ln *LookupNonUnique) Cost() int
Cost returns the cost of this vindex as 20.
func (*LookupNonUnique) Create ¶
func (ln *LookupNonUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupNonUnique) Delete ¶
func (ln *LookupNonUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*LookupNonUnique) IsUnique ¶
func (ln *LookupNonUnique) IsUnique() bool
IsUnique returns false since the Vindex is non unique.
func (*LookupNonUnique) Map ¶
func (ln *LookupNonUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupNonUnique) MarshalJSON ¶
func (ln *LookupNonUnique) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupHash.
func (*LookupNonUnique) NeedsVCursor ¶
func (ln *LookupNonUnique) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupNonUnique) String ¶
func (ln *LookupNonUnique) String() string
String returns the name of the vindex.
type LookupUnicodeLooseMD5Hash ¶
type LookupUnicodeLooseMD5Hash struct {
// contains filtered or unexported fields
}
LookupUnicodeLooseMD5Hash defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's NonUnique and a Lookup and stores the from value in a hashed form. Warning: This Vindex is being depcreated in favor of Lookup
func (*LookupUnicodeLooseMD5Hash) Cost ¶
func (lh *LookupUnicodeLooseMD5Hash) Cost() int
Cost returns the cost of this vindex as 20.
func (*LookupUnicodeLooseMD5Hash) Create ¶
func (lh *LookupUnicodeLooseMD5Hash) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupUnicodeLooseMD5Hash) Delete ¶
func (lh *LookupUnicodeLooseMD5Hash) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*LookupUnicodeLooseMD5Hash) IsUnique ¶
func (lh *LookupUnicodeLooseMD5Hash) IsUnique() bool
IsUnique returns false since the Vindex is not unique.
func (*LookupUnicodeLooseMD5Hash) Map ¶
func (lh *LookupUnicodeLooseMD5Hash) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupUnicodeLooseMD5Hash) MarshalJSON ¶
func (lh *LookupUnicodeLooseMD5Hash) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupHash.
func (*LookupUnicodeLooseMD5Hash) NeedsVCursor ¶
func (lh *LookupUnicodeLooseMD5Hash) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupUnicodeLooseMD5Hash) String ¶
func (lh *LookupUnicodeLooseMD5Hash) String() string
String returns the name of the vindex.
type LookupUnicodeLooseMD5HashUnique ¶
type LookupUnicodeLooseMD5HashUnique struct {
// contains filtered or unexported fields
}
LookupUnicodeLooseMD5HashUnique defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's Unique and a Lookup and will store the from value in a hashed format. Warning: This Vindex is being depcreated in favor of LookupUnique
func (*LookupUnicodeLooseMD5HashUnique) Cost ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) Cost() int
Cost returns the cost of this vindex as 10.
func (*LookupUnicodeLooseMD5HashUnique) Create ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupUnicodeLooseMD5HashUnique) Delete ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*LookupUnicodeLooseMD5HashUnique) IsUnique ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*LookupUnicodeLooseMD5HashUnique) Map ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupUnicodeLooseMD5HashUnique) MarshalJSON ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupHashUnique.
func (*LookupUnicodeLooseMD5HashUnique) NeedsVCursor ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupUnicodeLooseMD5HashUnique) String ¶
func (lhu *LookupUnicodeLooseMD5HashUnique) String() string
String returns the name of the vindex.
type LookupUnique ¶
type LookupUnique struct {
// contains filtered or unexported fields
}
LookupUnique defines a vindex that uses a lookup table. The table is expected to define the id column as unique. It's Unique and a Lookup.
func (*LookupUnique) Cost ¶
func (lu *LookupUnique) Cost() int
Cost returns the cost of this vindex as 10.
func (*LookupUnique) Create ¶
func (lu *LookupUnique) Create(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte, ignoreMode bool) error
Create reserves the id by inserting it into the vindex table.
func (*LookupUnique) Delete ¶
func (lu *LookupUnique) Delete(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksid []byte) error
Delete deletes the entry from the vindex table.
func (*LookupUnique) IsUnique ¶
func (lu *LookupUnique) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*LookupUnique) Map ¶
func (lu *LookupUnique) Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*LookupUnique) MarshalJSON ¶
func (lu *LookupUnique) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of LookupUnique.
func (*LookupUnique) NeedsVCursor ¶
func (lu *LookupUnique) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*LookupUnique) String ¶
func (lu *LookupUnique) String() string
String returns the name of the vindex.
type MultiColumn ¶
type MultiColumn interface { Vindex Map(vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error) Verify(vcursor VCursor, rowsColValues [][]sqltypes.Value, ksids [][]byte) ([]bool, error) }
MultiColumn defines the interface for a multi-column vindex.
type NewVindexFunc ¶
A NewVindexFunc is a function that creates a Vindex based on the properties specified in the input map. Every vindex must register a NewVindexFunc under a unique vindexType.
type Null ¶
type Null struct {
// contains filtered or unexported fields
}
Null defines a vindex that always return 0. It's Unique and Functional. This is useful for rows that always go into the first shard. This Vindex can be used for validating an unsharded->sharded transition. Unlike other vindexes, this one will work even for NULL input values. This will allow you to keep MySQL auto-inc columns unchanged.
func (*Null) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
type Numeric ¶
type Numeric struct {
// contains filtered or unexported fields
}
Numeric defines a bit-pattern mapping of a uint64 to the KeyspaceId. It's Unique and Reversible.
func (*Numeric) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
func (*Numeric) ReverseMap ¶
ReverseMap returns the associated ids for the ksids.
type NumericLookupTable ¶
NumericLookupTable stores the mapping of keys.
type NumericStaticMap ¶
type NumericStaticMap struct {
// contains filtered or unexported fields
}
NumericStaticMap is similar to vindex Numeric but first attempts a lookup via a JSON file.
func (*NumericStaticMap) Cost ¶
func (*NumericStaticMap) Cost() int
Cost returns the cost of this vindex as 1.
func (*NumericStaticMap) IsUnique ¶
func (vind *NumericStaticMap) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*NumericStaticMap) Map ¶
func (vind *NumericStaticMap) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*NumericStaticMap) NeedsVCursor ¶
func (vind *NumericStaticMap) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*NumericStaticMap) String ¶
func (vind *NumericStaticMap) String() string
String returns the name of the vindex.
type RegionExperimental ¶
type RegionExperimental struct {
// contains filtered or unexported fields
}
RegionExperimental is a multi-column unique vindex. The first column is prefixed to the hash of the second column to produce the keyspace id. RegionExperimental can be used for geo-partitioning because the first column can denote a region, and its value will dictate the shard for that region.
func (*RegionExperimental) Cost ¶
func (ge *RegionExperimental) Cost() int
Cost returns the cost of this index as 1.
func (*RegionExperimental) IsUnique ¶
func (ge *RegionExperimental) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*RegionExperimental) Map ¶
func (ge *RegionExperimental) Map(vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
Map satisfies MultiColumn.
func (*RegionExperimental) NeedsVCursor ¶
func (ge *RegionExperimental) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*RegionExperimental) String ¶
func (ge *RegionExperimental) String() string
String returns the name of the vindex.
type RegionJSON ¶
type RegionJSON struct {
// contains filtered or unexported fields
}
RegionJSON is a multi-column unique vindex The first column is used to lookup the prefix part of the keyspace id, the second column is hashed, and the two values are combined to produce the keyspace id. RegionJson can be used for geo-partitioning because the first column can denote a region, and it will dictate the shard range for that region.
func (*RegionJSON) Cost ¶
func (rv *RegionJSON) Cost() int
Cost returns the cost of this index as 1.
func (*RegionJSON) IsUnique ¶
func (rv *RegionJSON) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*RegionJSON) Map ¶
func (rv *RegionJSON) Map(vcursor VCursor, rowsColValues [][]sqltypes.Value) ([]key.Destination, error)
Map satisfies MultiColumn.
func (*RegionJSON) NeedsVCursor ¶
func (rv *RegionJSON) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*RegionJSON) String ¶
func (rv *RegionJSON) String() string
String returns the name of the vindex.
type ReverseBits ¶
type ReverseBits struct {
// contains filtered or unexported fields
}
ReverseBits defines vindex that reverses the bits of a number. It's Unique, Reversible and Functional.
func (*ReverseBits) Cost ¶
func (vind *ReverseBits) Cost() int
Cost returns the cost of this index as 1.
func (*ReverseBits) IsUnique ¶
func (vind *ReverseBits) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*ReverseBits) Map ¶
func (vind *ReverseBits) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map returns the corresponding KeyspaceId values for the given ids.
func (*ReverseBits) NeedsVCursor ¶
func (vind *ReverseBits) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*ReverseBits) ReverseMap ¶
ReverseMap returns the ids from ksids.
func (*ReverseBits) String ¶
func (vind *ReverseBits) String() string
String returns the name of the vindex.
type Reversible ¶
type Reversible interface { SingleColumn ReverseMap(vcursor VCursor, ks [][]byte) ([]sqltypes.Value, error) }
A Reversible vindex is one that can perform a reverse lookup from a keyspace id to an id. This is optional. If present, VTGate can use it to fill column values based on the target keyspace id. Reversible is supported only for SingleColumn vindexes.
type RoutingRule ¶
RoutingRule represents one routing rule.
func (*RoutingRule) MarshalJSON ¶
func (rr *RoutingRule) MarshalJSON() ([]byte, error)
MarshalJSON returns a JSON representation of Column.
type SingleColumn ¶
type SingleColumn interface { Vindex // Map can map ids to key.Destination objects. // If the Vindex is unique, each id would map to either // a KeyRange, or a single KeyspaceID. // If the Vindex is non-unique, each id would map to either // a KeyRange, or a list of KeyspaceID. Map(vcursor VCursor, ids []sqltypes.Value) ([]key.Destination, error) // Verify returns true for every id that successfully maps to the // specified keyspace id. Verify(vcursor VCursor, ids []sqltypes.Value, ksids [][]byte) ([]bool, error) }
SingleColumn defines the interface for a single column vindex.
type Table ¶
type Table struct { Type string `json:"type,omitempty"` Name sqlparser.TableIdent `json:"name"` Keyspace *Keyspace `json:"-"` ColumnVindexes []*ColumnVindex `json:"column_vindexes,omitempty"` Ordered []*ColumnVindex `json:"ordered,omitempty"` Owned []*ColumnVindex `json:"owned,omitempty"` AutoIncrement *AutoIncrement `json:"auto_increment,omitempty"` Columns []Column `json:"columns,omitempty"` Pinned []byte `json:"pinned,omitempty"` ColumnListAuthoritative bool `json:"column_list_authoritative,omitempty"` }
Table represents a table in VSchema.
type UnicodeLooseMD5 ¶
type UnicodeLooseMD5 struct {
// contains filtered or unexported fields
}
UnicodeLooseMD5 is a vindex that normalizes and hashes unicode strings to a keyspace id. It conservatively converts the string to its base characters before hashing. This is also known as UCA level 1. Ref: http://www.unicode.org/reports/tr10/#Multi_Level_Comparison. This is compatible with MySQL's utf8_unicode_ci collation.
func (*UnicodeLooseMD5) IsUnique ¶
func (vind *UnicodeLooseMD5) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*UnicodeLooseMD5) Map ¶
func (vind *UnicodeLooseMD5) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*UnicodeLooseMD5) NeedsVCursor ¶
func (vind *UnicodeLooseMD5) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*UnicodeLooseMD5) String ¶
func (vind *UnicodeLooseMD5) String() string
String returns the name of the vindex.
type UnicodeLooseXXHash ¶ added in v0.8.0
type UnicodeLooseXXHash struct {
// contains filtered or unexported fields
}
UnicodeLooseXXHash is a vindex that normalizes and hashes unicode strings to a keyspace id. It conservatively converts the string to its base characters before hashing. This is also known as UCA level 1. Ref: http://www.unicode.org/reports/tr10/#Multi_Level_Comparison. This is compatible with MySQL's utf8_unicode_ci collation.
func (*UnicodeLooseXXHash) Cost ¶ added in v0.8.0
func (vind *UnicodeLooseXXHash) Cost() int
Cost returns the cost as 1.
func (*UnicodeLooseXXHash) IsUnique ¶ added in v0.8.0
func (vind *UnicodeLooseXXHash) IsUnique() bool
IsUnique returns true since the Vindex is unique.
func (*UnicodeLooseXXHash) Map ¶ added in v0.8.0
func (vind *UnicodeLooseXXHash) Map(cursor VCursor, ids []sqltypes.Value) ([]key.Destination, error)
Map can map ids to key.Destination objects.
func (*UnicodeLooseXXHash) NeedsVCursor ¶ added in v0.8.0
func (vind *UnicodeLooseXXHash) NeedsVCursor() bool
NeedsVCursor satisfies the Vindex interface.
func (*UnicodeLooseXXHash) String ¶ added in v0.8.0
func (vind *UnicodeLooseXXHash) String() string
String returns the name of the vindex.
type VCursor ¶
type VCursor interface { Execute(method string, query string, bindvars map[string]*querypb.BindVariable, rollbackOnError bool, co vtgatepb.CommitOrder) (*sqltypes.Result, error) ExecuteKeyspaceID(keyspace string, ksid []byte, query string, bindVars map[string]*querypb.BindVariable, rollbackOnError, autocommit bool) (*sqltypes.Result, error) InTransactionAndIsDML() bool LookupRowLockShardSession() vtgatepb.CommitOrder }
A VCursor is an interface that allows you to execute queries in the current context and session of a VTGate request. Vindexes can use this interface to execute lookup queries.
type VSchema ¶
type VSchema struct { RoutingRules map[string]*RoutingRule `json:"routing_rules"` Keyspaces map[string]*KeyspaceSchema `json:"keyspaces"` // contains filtered or unexported fields }
VSchema represents the denormalized version of SrvVSchema, used for building routing plans.
func BuildVSchema ¶
func BuildVSchema(source *vschemapb.SrvVSchema) (vschema *VSchema, err error)
BuildVSchema builds a VSchema from a SrvVSchema.
func (*VSchema) FindTable ¶
FindTable returns a pointer to the Table. If a keyspace is specified, only tables from that keyspace are searched. If the specified keyspace is unsharded and no tables matched, it's considered valid: FindTable will construct a table of that name and return it. If no kesypace is specified, then a table is returned only if its name is unique across all keyspaces. If there is only one keyspace in the vschema, and it's unsharded, then all table requests are considered valid and belonging to that keyspace. FindTable bypasses routing rules and returns at most one table.
func (*VSchema) FindTableOrVindex ¶ added in v0.8.0
func (vschema *VSchema) FindTableOrVindex(keyspace, name string, tabletType topodatapb.TabletType) (*Table, Vindex, error)
FindTableOrVindex finds a table or a Vindex by name using Find and FindVindex.
func (*VSchema) FindVindex ¶
FindVindex finds a vindex by name. If a keyspace is specified, only vindexes from that keyspace are searched. If no kesypace is specified, then a vindex is returned only if its name is unique across all keyspaces. The function returns an error only if the vindex name is ambiguous.
type Vindex ¶
type Vindex interface { // String returns the name of the Vindex instance. // It's used for testing and diagnostics. Use pointer // comparison to see if two objects refer to the same // Vindex. String() string // Cost is used by planbuilder to prioritize vindexes. // The cost can be 0 if the id is basically a keyspace id. // The cost can be 1 if the id can be hashed to a keyspace id. // The cost can be 2 or above if the id needs to be looked up // from an external data source. These guidelines are subject // to change in the future. Cost() int // IsUnique returns true if the Vindex is unique. // A Unique Vindex is allowed to return non-unique values like // a keyrange. This is in situations where the vindex does not // have enough information to map to a keyspace id. If so, such // a vindex cannot be primary. IsUnique() bool // NeedsVCursor returns true if the Vindex makes calls into the // VCursor. Such vindexes cannot be used by vreplication. NeedsVCursor() bool }
Vindex defines the interface required to register a vindex.
func CreateVindex ¶
CreateVindex creates a vindex of the specified type using the supplied params. The type must have been previously registered.
func NewBinaryMD5 ¶
NewBinaryMD5 creates a new BinaryMD5.
func NewConsistentLookup ¶
NewConsistentLookup creates a ConsistentLookup vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
func NewConsistentLookupUnique ¶
NewConsistentLookupUnique creates a ConsistentLookupUnique vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
func NewLookup ¶
NewLookup creates a LookupNonUnique vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause inserts to upsert and deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewLookupHash ¶
NewLookupHash creates a LookupHash vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause inserts to upsert and deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewLookupHashUnique ¶
NewLookupHashUnique creates a LookupHashUnique vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewLookupUnicodeLooseMD5Hash ¶
NewLookupUnicodeLooseMD5Hash creates a LookupUnicodeLooseMD5Hash vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause inserts to upsert and deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewLookupUnicodeLooseMD5HashUnique ¶
NewLookupUnicodeLooseMD5HashUnique creates a LookupUnicodeLooseMD5HashUnique vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewLookupUnique ¶
NewLookupUnique creates a LookupUnique vindex. The supplied map has the following required fields:
table: name of the backing table. It can be qualified by the keyspace. from: list of columns in the table that have the 'from' values of the lookup vindex. to: The 'to' column name of the table.
The following fields are optional:
autocommit: setting this to "true" will cause deletes to be ignored. write_only: in this mode, Map functions return the full keyrange causing a full scatter.
func NewNumeric ¶
NewNumeric creates a Numeric vindex.
func NewNumericStaticMap ¶
NewNumericStaticMap creates a NumericStaticMap vindex.
func NewRegionExperimental ¶
NewRegionExperimental creates a RegionExperimental vindex. The supplied map requires all the fields of "consistent_lookup_unique". Additionally, it requires a region_bytes argument whose value can be "1", or "2".
func NewRegionJSON ¶
NewRegionJSON creates a RegionJson vindex. The supplied map requires all the fields of "RegionExperimental". Additionally, it requires a region_map argument representing the path to a json file containing a map of country to region.
func NewReverseBits ¶
NewReverseBits creates a new ReverseBits.
func NewUnicodeLooseMD5 ¶
NewUnicodeLooseMD5 creates a new UnicodeLooseMD5.
func NewUnicodeLooseXXHash ¶ added in v0.8.0
NewUnicodeLooseXXHash creates a new UnicodeLooseXXHash struct.
type WantOwnerInfo ¶
type WantOwnerInfo interface {
SetOwnerInfo(keyspace, table string, cols []sqlparser.ColIdent) error
}
WantOwnerInfo defines the interface that a vindex must satisfy to request info about the owner table. This information can be used to query the owner's table for the owning row's presence.
type XXHash ¶
type XXHash struct {
// contains filtered or unexported fields
}
XXHash defines vindex that hashes any sql types to a KeyspaceId by using xxhash64. It's Unique and works on any platform giving identical result.
func (*XXHash) NeedsVCursor ¶
NeedsVCursor satisfies the Vindex interface.
Source Files ¶
- binary.go
- binarymd5.go
- consistent_lookup.go
- hash.go
- lookup.go
- lookup_hash.go
- lookup_internal.go
- lookup_unicodeloosemd5_hash.go
- null.go
- numeric.go
- numeric_static_map.go
- region_experimental.go
- region_json.go
- reverse_bits.go
- unicode.go
- unicodeloosemd5.go
- unicodeloosexxhash.go
- vindex.go
- vschema.go
- xxhash.go