sqlannotation

package
v2.1.0-alpha.1+incompa... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2016 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package sqlannotation provides functions for annotating DML statements with keyspace-id comments and parsing them. These annotations are used during filtered-replication to route the DML statement to the correct shard. TOOD(erez): Move the code for the "_stream" annotations from vttablet to here.

Index

Constants

View Source
const (
	ExtractKeySpaceIDParseError                 = iota
	ExtractKeySpaceIDReplicationUnfriendlyError = iota
)

Possible values for ExtractKeySpaceIDError.Kind

Variables

This section is empty.

Functions

func AddKeyspaceID

func AddKeyspaceID(sql string, keyspaceID []byte, trailingComments string) string

AddKeyspaceID returns a copy of 'sql' annotated with the given keyspace id. It also appends the additional trailingComments, if any.

func AnnotateIfDML

func AnnotateIfDML(sql string, keyspaceIDs [][]byte) string

AnnotateIfDML annotates 'sql' based on 'keyspaceIDs'

If 'sql' is not a DML statement no annotation is added. If 'sql' is a DML statement and contains exactly one keyspaceID

it is used to annotate 'sql'

Otherwise 'sql' is annotated as replication-unfriendly.

func ExtractKeySpaceID

func ExtractKeySpaceID(sql string) (keyspaceID []byte, err error)

ExtractKeySpaceID parses the annotation of the given statement and tries to extract the keyspace id. If a keyspace-id comment exists 'keyspaceID' is set to the parsed keyspace id and err is set to nil; otherwise, if a filtered-replication-unfriendly comment exists or some other parsing error occured, keyspaceID is set to nil and err is set to a non-nil error value.

func IsDML

func IsDML(sql string) bool

IsDML returns true if 'querySQL' is an INSERT, UPDATE or DELETE statement.

Types

type ExtractKeySpaceIDError

type ExtractKeySpaceIDError struct {
	Kind    int
	Message string
}

ExtractKeySpaceIDError is the error type returned from ExtractKeySpaceID Kind is a numeric code for the error (see constants below) and Message is an error message string.

func (ExtractKeySpaceIDError) Error

func (err ExtractKeySpaceIDError) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL