sql

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2023 License: Apache-2.0 Imports: 15 Imported by: 4

Documentation

Overview

Code generated by goyacc -l -o sql_parser.go sql_grammar.y. DO NOT EDIT.

Index

Constants

View Source
const (
	KeyValPrefixNull       byte = 0x20
	KeyValPrefixNotNull    byte = 0x80
	KeyValPrefixUpperBound byte = 0xFF
)
View Source
const (
	NamedNonPositionalParamType positionalParamType = iota + 1
	NamedPositionalParamType
	UnnamedParamType
)
View Source
const (
	PIndexPrefix = "R." // (key=R.{1}{tableID}{0}({null}({pkVal}{padding}{pkValLen})?)+, value={count (colID valLen val)+})
	SIndexPrefix = "E." // (key=E.{1}{tableID}{indexID}({null}({val}{padding}{valLen})?)+({pkVal}{padding}{pkValLen})+, value={})
	UIndexPrefix = "N." // (key=N.{1}{tableID}{indexID}({null}({val}{padding}{valLen})?)+, value={({pkVal}{padding}{pkValLen})+})

)
View Source
const (
	NowFnCall       string = "NOW"
	DatabasesFnCall string = "DATABASES"
	TablesFnCall    string = "TABLES"
	ColumnsFnCall   string = "COLUMNS"
	IndexesFnCall   string = "INDEXES"
)
View Source
const ADD = 57362
View Source
const AFTER = 57351
View Source
const AGGREGATE_FUNC = 57420
View Source
const ALL = 57397
View Source
const ALTER = 57361
View Source
const AS = 57395
View Source
const ASC = 57393
View Source
const AUTO_INCREMENT = 57404
View Source
const BEFORE = 57352
View Source
const BEGIN = 57368
View Source
const BLOB = 57419
View Source
const BOOLEAN = 57418
View Source
const BY = 57389
View Source
const CAST = 57406
View Source
const CMPOP = 57412
View Source
const COLUMN = 57365
View Source
const COMMIT = 57370
View Source
const CONFLICT = 57379
View Source
const CREATE = 57346
View Source
const DATABASE = 57348
View Source
const DELETE = 57376
View Source
const DESC = 57394
View Source
const DISTINCT = 57383
View Source
const DO = 57380
View Source
const DOT = 57422
View Source
const ERROR = 57421
View Source
const EXISTS = 57401
View Source
const EncIDLen = 4
View Source
const EncLenLen = 4
View Source
const FLOAT = 57416
View Source
const FROM = 57384
View Source
const GROUP = 57388
View Source
const HAVING = 57386
View Source
const IDENTIFIER = 57413
View Source
const IF = 57400
View Source
const IN = 57402
View Source
const INDEX = 57359
View Source
const INSERT = 57372
View Source
const INTEGER = 57415
View Source
const INTO = 57374
View Source
const IS = 57403
View Source
const JOIN = 57385
View Source
const JOINTYPE = 57410
View Source
const KEY = 57367
View Source
const LIKE = 57399
View Source
const LIMIT = 57390
View Source
const LOP = 57411
View Source
const MaxNumberOfColumnsInIndex = 8
View Source
const NOT = 57398
View Source
const NOTHING = 57381
View Source
const NPARAM = 57408
View Source
const NULL = 57405
View Source
const OF = 57355
View Source
const OFFSET = 57391
View Source
const ON = 57360
View Source
const ORDER = 57392
View Source
const PKIndexID = uint32(0)
View Source
const PPARAM = 57409
View Source
const PRIMARY = 57366
View Source
const RENAME = 57363
View Source
const ROLLBACK = 57371
View Source
const SCAST = 57407
View Source
const SELECT = 57382
View Source
const SET = 57378
View Source
const SINCE = 57350
View Source
const SNAPSHOT = 57349
View Source
const STMT_SEPARATOR = 57423
View Source
const TABLE = 57357
View Source
const TIMESTAMP = 57356
View Source
const TO = 57364
View Source
const TRANSACTION = 57369
View Source
const TX = 57354
View Source
const TYPE = 57414
View Source
const UNION = 57396
View Source
const UNIQUE = 57358
View Source
const UNTIL = 57353
View Source
const UPDATE = 57377
View Source
const UPSERT = 57373
View Source
const USE = 57347
View Source
const VALUES = 57375
View Source
const VARCHAR = 57417
View Source
const WHERE = 57387

Variables

View Source
var ErrAlreadyClosed = store.ErrAlreadyClosed
View Source
var ErrAmbiguousSelector = errors.New("ambiguous selector")
View Source
var ErrColumnAlreadyExists = errors.New("column already exists")
View Source
var ErrColumnDoesNotExist = errors.New("column does not exist")
View Source
var ErrColumnIsNotAnAggregation = errors.New("column is not an aggregation")
View Source
var ErrColumnMismatchInUnionStmt = errors.New("column mismatch in union statement")
View Source
var ErrColumnNotIndexed = errors.New("column is not indexed")
View Source
var ErrCorruptedData = store.ErrCorruptedData
View Source
var ErrDDLorDMLTxOnly = errors.New("transactions can NOT combine DDL and DML statements")
View Source
var ErrDatabaseAlreadyExists = errors.New("database already exists")
View Source
var ErrDatabaseDoesNotExist = errors.New("database does not exist")
View Source
var ErrDivisionByZero = errors.New("division by zero")
View Source
var ErrDuplicatedColumn = errors.New("duplicated column")
View Source
var ErrDuplicatedParameters = errors.New("duplicated parameters")
View Source
var ErrEitherNamedOrUnnamedParams = errors.New("either named or unnamed params")
View Source
var ErrEitherPosOrNonPosParams = errors.New("either positional or non-positional named params")
View Source
var ErrExpectingDQLStmt = errors.New("illegal statement. DQL statement expected")
View Source
var ErrFunctionDoesNotExist = errors.New("function does not exist")
View Source
var ErrHavingClauseRequiresGroupClause = errors.New("having clause requires group clause")
View Source
var ErrIllegalArguments = store.ErrIllegalArguments
View Source
var ErrIllegalMappedKey = errors.New("error illegal mapped key")
View Source
var ErrIndexAlreadyExists = errors.New("index already exists")
View Source
var ErrInferredMultipleTypes = errors.New("inferred multiple types")
View Source
var ErrInvalidColumn = errors.New("invalid column")
View Source
var ErrInvalidCondition = errors.New("invalid condition")
View Source
var ErrInvalidNumberOfValues = errors.New("invalid number of values provided")
View Source
var ErrInvalidPositionalParameter = errors.New("invalid positional parameter")
View Source
var ErrInvalidTypes = errors.New("invalid types")
View Source
var ErrInvalidValue = errors.New("invalid value provided")
View Source
var ErrLimitedAutoIncrement = errors.New("only INTEGER single-column primary keys can be set as auto incremental")
View Source
var ErrLimitedCount = errors.New("only unbounded counting is supported i.e. COUNT(*)")
View Source
var ErrLimitedGroupBy = errors.New("group by requires ordering by the grouping column")
View Source
var ErrLimitedIndexCreation = errors.New("index creation is only supported on empty tables")
View Source
var ErrLimitedKeyType = errors.New("indexed key of unsupported type or exceeded length")
View Source
var ErrLimitedMaxLen = errors.New("only VARCHAR and BLOB types support max length")
View Source
var ErrLimitedOrderBy = errors.New("order is limit to one indexed column")
View Source
var ErrMaxKeyLengthExceeded = errors.New("max key length exceeded")
View Source
var ErrMaxLengthExceeded = errors.New("max length exceeded")
View Source
var ErrMaxNumberOfColumnsInIndexExceeded = errors.New("number of columns in multi-column index exceeded")
View Source
var ErrMissingParameter = errors.New("missing parameter")
View Source
var ErrNestedTxNotSupported = errors.New("nested tx are not supported")
View Source
var ErrNewColumnMustBeNullable = errors.New("new column must be nullable")
View Source
var ErrNoAvailableIndex = errors.New("no available index")
View Source
var ErrNoMoreRows = store.ErrNoMoreEntries
View Source
var ErrNoOngoingTx = errors.New("no ongoing transaction")
View Source
var ErrNoSupported = errors.New("not supported")
View Source
var ErrNonTransactionalStmt = errors.New("non transactional statement")
View Source
var ErrNotComparableValues = errors.New("values are not comparable")
View Source
var ErrNotNullableColumnCannotBeNull = errors.New("not nullable column can not be null")
View Source
var ErrNumericTypeExpected = errors.New("numeric type expected")
View Source
var ErrPKCanNotBeNull = errors.New("primary key can not be null")
View Source
var ErrPKCanNotBeUpdated = errors.New("primary key can not be updated")
View Source
var ErrParsingError = errors.New("parsing error")
View Source
var ErrSameOldAndNewColumnName = errors.New("same old and new column names")
View Source
var ErrTableAlreadyExists = errors.New("table already exists")
View Source
var ErrTableDoesNotExist = errors.New("table does not exist")
View Source
var ErrTooManyRows = errors.New("too many rows")
View Source
var ErrTxDoesNotExist = errors.New("tx does not exist")
View Source
var ErrUnexpected = errors.New("unexpected error")
View Source
var ErrUnspecifiedMultiDBHandler = fmt.Errorf("%w: unspecified multidbHanlder", store.ErrIllegalState)
View Source
var ErrUnsupportedCast = fmt.Errorf("%w: unsupported cast", ErrInvalidValue)
View Source
var ErrUnsupportedJoinType = errors.New("unsupported join type")
View Source
var ErrUnsupportedParameter = errors.New("unsupported parameter")
View Source
var MaxKeyLen = 512

Functions

func EncodeID

func EncodeID(id uint32) []byte

func EncodeRawValue

func EncodeRawValue(val interface{}, colType SQLValueType, maxLen int) ([]byte, error)

EncodeRawValue encode a value in a byte format. This is the internal binary representation of a value. Can be decoded with DecodeValue.

func EncodeRawValueAsKey added in v1.5.0

func EncodeRawValueAsKey(val interface{}, colType SQLValueType, maxLen int) ([]byte, int, error)

EncodeRawValueAsKey encodes a value in a b-tree meaningful way.

func EncodeSelector

func EncodeSelector(aggFn, table, col string) string

func EncodeValue

func EncodeValue(val TypedValue, colType SQLValueType, maxLen int) ([]byte, error)

func EncodeValueAsKey added in v1.5.0

func EncodeValueAsKey(val TypedValue, colType SQLValueType, maxLen int) ([]byte, int, error)

func EncodedPK added in v1.5.0

func EncodedPK(table *Table, valuesByColID map[uint32]TypedValue) ([]byte, error)

func IsNumericType added in v1.5.0

func IsNumericType(t SQLValueType) bool

func MapKey

func MapKey(prefix []byte, mappingPrefix string, encValues ...[]byte) []byte

func NewColUpdate added in v1.5.0

func NewColUpdate(col string, val ValueExp) *colUpdate

func TimeFromInt64 added in v1.2.2

func TimeFromInt64(t int64) time.Time

func TimeToInt64 added in v1.2.2

func TimeToInt64(t time.Time) int64

Types

type AVGValue

type AVGValue struct {
	// contains filtered or unexported fields
}

func (*AVGValue) ColBounded

func (v *AVGValue) ColBounded() bool

func (*AVGValue) Compare

func (v *AVGValue) Compare(val TypedValue) (int, error)

func (*AVGValue) IsNull added in v1.2.0

func (v *AVGValue) IsNull() bool

func (*AVGValue) RawValue added in v1.5.0

func (v *AVGValue) RawValue() interface{}

func (*AVGValue) Selector

func (v *AVGValue) Selector() string

func (*AVGValue) Type

func (v *AVGValue) Type() SQLValueType

type AddColumnStmt

type AddColumnStmt struct {
	// contains filtered or unexported fields
}

func NewAddColumnStmt added in v1.5.0

func NewAddColumnStmt(table string, colSpec *ColSpec) *AddColumnStmt

type AggColSelector

type AggColSelector struct {
	// contains filtered or unexported fields
}

func NewAggColSelector added in v1.5.0

func NewAggColSelector(aggFn AggregateFn, table, col string) *AggColSelector

type AggregateFn

type AggregateFn = string
const (
	COUNT AggregateFn = "COUNT"
	SUM   AggregateFn = "SUM"
	MAX   AggregateFn = "MAX"
	MIN   AggregateFn = "MIN"
	AVG   AggregateFn = "AVG"
)

type AggregatedValue

type AggregatedValue interface {
	TypedValue

	Selector() string
	ColBounded() bool
	// contains filtered or unexported methods
}

type BeginTransactionStmt added in v1.2.0

type BeginTransactionStmt struct {
}

type BinBoolExp

type BinBoolExp struct {
	// contains filtered or unexported fields
}

func NewBinBoolExp added in v1.5.0

func NewBinBoolExp(op LogicOperator, lrexp, rrexp ValueExp) *BinBoolExp

type Blob

type Blob struct {
	// contains filtered or unexported fields
}

func NewBlob added in v1.5.0

func NewBlob(val []byte) *Blob

func (*Blob) Compare

func (v *Blob) Compare(val TypedValue) (int, error)

func (*Blob) IsNull added in v1.2.0

func (v *Blob) IsNull() bool

func (*Blob) RawValue added in v1.5.0

func (v *Blob) RawValue() interface{}

func (*Blob) Type

func (v *Blob) Type() SQLValueType

type Bool

type Bool struct {
	// contains filtered or unexported fields
}

func NewBool added in v1.5.0

func NewBool(val bool) *Bool

func (*Bool) Compare

func (v *Bool) Compare(val TypedValue) (int, error)

func (*Bool) IsNull added in v1.2.0

func (v *Bool) IsNull() bool

func (*Bool) RawValue added in v1.5.0

func (v *Bool) RawValue() interface{}

func (*Bool) Type

func (v *Bool) Type() SQLValueType

type Cast added in v1.2.0

type Cast struct {
	// contains filtered or unexported fields
}

type Catalog

type Catalog struct {
	// contains filtered or unexported fields
}

Catalog represents a database catalog containing metadata for all tables in the database.

func (*Catalog) ExistTable added in v1.5.0

func (catlg *Catalog) ExistTable(table string) bool

func (*Catalog) GetTableByID added in v1.5.0

func (catlg *Catalog) GetTableByID(id uint32) (*Table, error)

func (*Catalog) GetTableByName

func (catlg *Catalog) GetTableByName(name string) (*Table, error)

func (*Catalog) GetTables added in v1.5.0

func (catlg *Catalog) GetTables() []*Table

type CmpBoolExp

type CmpBoolExp struct {
	// contains filtered or unexported fields
}

func NewCmpBoolExp added in v1.5.0

func NewCmpBoolExp(op CmpOperator, left, right ValueExp) *CmpBoolExp

func (*CmpBoolExp) Left added in v1.5.0

func (bexp *CmpBoolExp) Left() ValueExp

func (*CmpBoolExp) OP added in v1.5.0

func (bexp *CmpBoolExp) OP() CmpOperator

func (*CmpBoolExp) Right added in v1.5.0

func (bexp *CmpBoolExp) Right() ValueExp

type CmpOperator

type CmpOperator = int
const (
	EQ CmpOperator = iota
	NE
	LT
	LE
	GT
	GE
)

type ColDescriptor

type ColDescriptor struct {
	AggFn  string
	Table  string
	Column string
	Type   SQLValueType
}

func (*ColDescriptor) Selector

func (d *ColDescriptor) Selector() string

type ColSelector

type ColSelector struct {
	// contains filtered or unexported fields
}

func NewColSelector added in v1.5.0

func NewColSelector(table, col string) *ColSelector

type ColSpec

type ColSpec struct {
	// contains filtered or unexported fields
}

func NewColSpec added in v1.5.0

func NewColSpec(name string, colType SQLValueType, maxLen int, autoIncrement bool, notNull bool) *ColSpec

type Column

type Column struct {
	// contains filtered or unexported fields
}

func (*Column) ID

func (c *Column) ID() uint32

func (*Column) IsAutoIncremental added in v1.1.0

func (c *Column) IsAutoIncremental() bool

func (*Column) IsNullable

func (c *Column) IsNullable() bool

func (*Column) MaxLen added in v1.1.0

func (c *Column) MaxLen() int

func (*Column) Name

func (c *Column) Name() string

func (*Column) Type

func (c *Column) Type() SQLValueType

type CommitStmt added in v1.2.0

type CommitStmt struct {
}

type Comparison

type Comparison int
const (
	EqualTo Comparison = iota
	LowerThan
	LowerOrEqualTo
	GreaterThan
	GreaterOrEqualTo
)

type CountValue

type CountValue struct {
	// contains filtered or unexported fields
}

func (*CountValue) ColBounded

func (v *CountValue) ColBounded() bool

func (*CountValue) Compare

func (v *CountValue) Compare(val TypedValue) (int, error)

func (*CountValue) IsNull added in v1.2.0

func (v *CountValue) IsNull() bool

func (*CountValue) RawValue added in v1.5.0

func (v *CountValue) RawValue() interface{}

func (*CountValue) Selector

func (v *CountValue) Selector() string

func (*CountValue) Type

func (v *CountValue) Type() SQLValueType

type CreateDatabaseStmt

type CreateDatabaseStmt struct {
	DB string
	// contains filtered or unexported fields
}

type CreateIndexStmt

type CreateIndexStmt struct {
	// contains filtered or unexported fields
}

func NewCreateIndexStmt added in v1.5.0

func NewCreateIndexStmt(table string, cols []string, isUnique bool) *CreateIndexStmt

type CreateTableStmt

type CreateTableStmt struct {
	// contains filtered or unexported fields
}

func NewCreateTableStmt added in v1.5.0

func NewCreateTableStmt(table string, ifNotExists bool, colsSpec []*ColSpec, pkColNames []string) *CreateTableStmt

type DataSource

type DataSource interface {
	SQLStmt
	Resolve(ctx context.Context, tx *SQLTx, params map[string]interface{}, scanSpecs *ScanSpecs) (RowReader, error)
	Alias() string
}

type DeleteFromStmt added in v1.2.0

type DeleteFromStmt struct {
	// contains filtered or unexported fields
}

func NewDeleteFromStmt added in v1.5.0

func NewDeleteFromStmt(table string, where ValueExp, orderBy []*OrdCol, limit ValueExp) *DeleteFromStmt

type DropIndexStmt added in v1.5.0

type DropIndexStmt struct {
	// contains filtered or unexported fields
}

DropIndexStmt represents a statement to delete a table.

func NewDropIndexStmt added in v1.5.0

func NewDropIndexStmt(table string, columns []string) *DropIndexStmt

type DropTableStmt added in v1.5.0

type DropTableStmt struct {
	// contains filtered or unexported fields
}

DropTableStmt represents a statement to delete a table.

func NewDropTableStmt added in v1.5.0

func NewDropTableStmt(table string) *DropTableStmt

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

func NewEngine

func NewEngine(store *store.ImmuStore, opts *Options) (*Engine, error)

func (*Engine) Catalog

func (e *Engine) Catalog(ctx context.Context, tx *SQLTx) (catalog *Catalog, err error)

func (*Engine) CopyCatalogToTx added in v1.5.0

func (e *Engine) CopyCatalogToTx(ctx context.Context, tx *store.OngoingTx) error

CopyCatalogToTx copies the current sql catalog to the ongoing transaction.

func (*Engine) Exec

func (e *Engine) Exec(ctx context.Context, tx *SQLTx, sql string, params map[string]interface{}) (ntx *SQLTx, committedTxs []*SQLTx, err error)

func (*Engine) ExecPreparedStmts

func (e *Engine) ExecPreparedStmts(ctx context.Context, tx *SQLTx, stmts []SQLStmt, params map[string]interface{}) (ntx *SQLTx, committedTxs []*SQLTx, err error)

func (*Engine) GetPrefix added in v1.5.0

func (e *Engine) GetPrefix() []byte

func (*Engine) GetStore added in v1.5.0

func (e *Engine) GetStore() *store.ImmuStore

func (*Engine) InferParameters added in v1.0.5

func (e *Engine) InferParameters(ctx context.Context, tx *SQLTx, sql string) (params map[string]SQLValueType, err error)

func (*Engine) InferParametersPreparedStmts added in v1.2.0

func (e *Engine) InferParametersPreparedStmts(ctx context.Context, tx *SQLTx, stmts []SQLStmt) (params map[string]SQLValueType, err error)

func (*Engine) NewTx added in v1.3.0

func (e *Engine) NewTx(ctx context.Context, opts *TxOptions) (*SQLTx, error)

func (*Engine) Query

func (e *Engine) Query(ctx context.Context, tx *SQLTx, sql string, params map[string]interface{}) (RowReader, error)

func (*Engine) QueryPreparedStmt

func (e *Engine) QueryPreparedStmt(ctx context.Context, tx *SQLTx, stmt DataSource, params map[string]interface{}) (rowReader RowReader, err error)

type ExistsBoolExp

type ExistsBoolExp struct {
	// contains filtered or unexported fields
}

type Float64 added in v1.5.0

type Float64 struct {
	// contains filtered or unexported fields
}

func NewFloat64 added in v1.5.0

func NewFloat64(val float64) *Float64

func (*Float64) Compare added in v1.5.0

func (v *Float64) Compare(val TypedValue) (int, error)

func (*Float64) IsNull added in v1.5.0

func (v *Float64) IsNull() bool

func (*Float64) RawValue added in v1.5.0

func (v *Float64) RawValue() interface{}

func (*Float64) Type added in v1.5.0

func (v *Float64) Type() SQLValueType

type FnCall added in v1.3.0

type FnCall struct {
	// contains filtered or unexported fields
}

type FnDataSourceStmt added in v1.3.0

type FnDataSourceStmt struct {
	// contains filtered or unexported fields
}

func (*FnDataSourceStmt) Alias added in v1.3.0

func (stmt *FnDataSourceStmt) Alias() string

func (*FnDataSourceStmt) Resolve added in v1.3.0

func (stmt *FnDataSourceStmt) Resolve(ctx context.Context, tx *SQLTx, params map[string]interface{}, scanSpecs *ScanSpecs) (rowReader RowReader, err error)

type InListExp added in v1.2.0

type InListExp struct {
	// contains filtered or unexported fields
}

TODO: once InSubQueryExp is supported, this struct may become obsolete by creating a ListDataSource struct

type InSubQueryExp added in v1.2.0

type InSubQueryExp struct {
	// contains filtered or unexported fields
}

type Index added in v1.1.0

type Index struct {
	// contains filtered or unexported fields
}

func (*Index) Cols added in v1.1.0

func (i *Index) Cols() []*Column

func (*Index) ID added in v1.5.0

func (i *Index) ID() uint32

func (*Index) IncludesCol added in v1.1.0

func (i *Index) IncludesCol(colID uint32) bool

func (*Index) IsPrimary added in v1.1.0

func (i *Index) IsPrimary() bool

func (*Index) IsUnique added in v1.1.0

func (i *Index) IsUnique() bool

func (*Index) Name added in v1.3.0

func (i *Index) Name() string

type Integer added in v1.5.0

type Integer struct {
	// contains filtered or unexported fields
}

func NewInteger added in v1.5.0

func NewInteger(val int64) *Integer

func (*Integer) Compare added in v1.5.0

func (v *Integer) Compare(val TypedValue) (int, error)

func (*Integer) IsNull added in v1.5.0

func (v *Integer) IsNull() bool

func (*Integer) RawValue added in v1.5.0

func (v *Integer) RawValue() interface{}

func (*Integer) Type added in v1.5.0

func (v *Integer) Type() SQLValueType

type JoinSpec

type JoinSpec struct {
	// contains filtered or unexported fields
}

type JoinType

type JoinType = int
const (
	InnerJoin JoinType = iota
	LeftJoin
	RightJoin
)

type LikeBoolExp

type LikeBoolExp struct {
	// contains filtered or unexported fields
}

func NewLikeBoolExp added in v1.5.0

func NewLikeBoolExp(val ValueExp, notLike bool, pattern ValueExp) *LikeBoolExp

type LogicOperator

type LogicOperator = int
const (
	AND LogicOperator = iota
	OR
)

type MaxValue

type MaxValue struct {
	// contains filtered or unexported fields
}

func (*MaxValue) ColBounded

func (v *MaxValue) ColBounded() bool

func (*MaxValue) Compare

func (v *MaxValue) Compare(val TypedValue) (int, error)

func (*MaxValue) IsNull added in v1.2.0

func (v *MaxValue) IsNull() bool

func (*MaxValue) RawValue added in v1.5.0

func (v *MaxValue) RawValue() interface{}

func (*MaxValue) Selector

func (v *MaxValue) Selector() string

func (*MaxValue) Type

func (v *MaxValue) Type() SQLValueType

type MinValue

type MinValue struct {
	// contains filtered or unexported fields
}

func (*MinValue) ColBounded

func (v *MinValue) ColBounded() bool

func (*MinValue) Compare

func (v *MinValue) Compare(val TypedValue) (int, error)

func (*MinValue) IsNull added in v1.2.0

func (v *MinValue) IsNull() bool

func (*MinValue) RawValue added in v1.5.0

func (v *MinValue) RawValue() interface{}

func (*MinValue) Selector

func (v *MinValue) Selector() string

func (*MinValue) Type

func (v *MinValue) Type() SQLValueType

type MultiDBHandler added in v1.3.0

type MultiDBHandler interface {
	ListDatabases(ctx context.Context) ([]string, error)
	CreateDatabase(ctx context.Context, db string, ifNotExists bool) error
	UseDatabase(ctx context.Context, db string) error
	ExecPreparedStmts(ctx context.Context, opts *TxOptions, stmts []SQLStmt, params map[string]interface{}) (ntx *SQLTx, committedTxs []*SQLTx, err error)
}

type NotBoolExp

type NotBoolExp struct {
	// contains filtered or unexported fields
}

type NullValue

type NullValue struct {
	// contains filtered or unexported fields
}

func (*NullValue) Compare

func (n *NullValue) Compare(val TypedValue) (int, error)

func (*NullValue) IsNull added in v1.2.0

func (n *NullValue) IsNull() bool

func (*NullValue) RawValue added in v1.5.0

func (n *NullValue) RawValue() interface{}

func (*NullValue) Type

func (n *NullValue) Type() SQLValueType

type NumExp

type NumExp struct {
	// contains filtered or unexported fields
}

type NumOperator

type NumOperator = int
const (
	ADDOP NumOperator = iota
	SUBSOP
	DIVOP
	MULTOP
)

type OnConflictDo added in v1.2.2

type OnConflictDo struct {
}

type Options added in v1.2.0

type Options struct {
	// contains filtered or unexported fields
}

func DefaultOptions added in v1.2.0

func DefaultOptions() *Options

func (*Options) Validate added in v1.5.0

func (opts *Options) Validate() error

func (*Options) WithAutocommit added in v1.2.0

func (opts *Options) WithAutocommit(autocommit bool) *Options

func (*Options) WithDistinctLimit added in v1.2.0

func (opts *Options) WithDistinctLimit(distinctLimit int) *Options

func (*Options) WithLazyIndexConstraintValidation added in v1.5.0

func (opts *Options) WithLazyIndexConstraintValidation(lazyIndexConstraintValidation bool) *Options

func (*Options) WithMultiDBHandler added in v1.5.0

func (opts *Options) WithMultiDBHandler(multidbHandler MultiDBHandler) *Options

func (*Options) WithPrefix added in v1.2.0

func (opts *Options) WithPrefix(prefix []byte) *Options

type OrdCol

type OrdCol struct {
	// contains filtered or unexported fields
}

func NewOrdCol added in v1.5.0

func NewOrdCol(table string, col string, descOrder bool) *OrdCol

type Param

type Param struct {
	// contains filtered or unexported fields
}

type RenameColumnStmt added in v1.3.0

type RenameColumnStmt struct {
	// contains filtered or unexported fields
}

func NewRenameColumnStmt added in v1.5.0

func NewRenameColumnStmt(table, oldName, newName string) *RenameColumnStmt

type RollbackStmt added in v1.2.0

type RollbackStmt struct {
}

type Row

type Row struct {
	ValuesByPosition []TypedValue
	ValuesBySelector map[string]TypedValue
}

type RowReader

type RowReader interface {
	Tx() *SQLTx
	TableAlias() string
	Parameters() map[string]interface{}
	Read(ctx context.Context) (*Row, error)
	Close() error
	Columns(ctx context.Context) ([]ColDescriptor, error)
	OrderBy() []ColDescriptor
	ScanSpecs() *ScanSpecs
	InferParameters(ctx context.Context, params map[string]SQLValueType) error
	// contains filtered or unexported methods
}

type RowSpec

type RowSpec struct {
	Values []ValueExp
}

func NewRowSpec added in v1.5.0

func NewRowSpec(values []ValueExp) *RowSpec

type SQLStmt

type SQLStmt interface {
	// contains filtered or unexported methods
}

func Parse

func Parse(r io.ByteReader) ([]SQLStmt, error)

func ParseString

func ParseString(sql string) ([]SQLStmt, error)

type SQLTx added in v1.2.0

type SQLTx struct {
	// contains filtered or unexported fields
}

SQLTx (no-thread safe) represents an interactive or incremental transaction with support of RYOW

func (*SQLTx) Cancel added in v1.2.0

func (sqlTx *SQLTx) Cancel() error

func (*SQLTx) Catalog added in v1.5.0

func (sqlTx *SQLTx) Catalog() *Catalog

func (*SQLTx) Closed added in v1.2.0

func (sqlTx *SQLTx) Closed() bool

func (*SQLTx) Commit added in v1.5.0

func (sqlTx *SQLTx) Commit(ctx context.Context) error

func (*SQLTx) Committed added in v1.5.0

func (sqlTx *SQLTx) Committed() bool

func (*SQLTx) FirstInsertedPKs added in v1.2.2

func (sqlTx *SQLTx) FirstInsertedPKs() map[string]int64

func (*SQLTx) IsExplicitCloseRequired added in v1.5.0

func (sqlTx *SQLTx) IsExplicitCloseRequired() bool

func (*SQLTx) LastInsertedPKs added in v1.2.0

func (sqlTx *SQLTx) LastInsertedPKs() map[string]int64

func (*SQLTx) RequireExplicitClose added in v1.5.0

func (sqlTx *SQLTx) RequireExplicitClose() error

func (*SQLTx) Timestamp added in v1.3.1

func (sqlTx *SQLTx) Timestamp() time.Time

func (*SQLTx) TxHeader added in v1.2.0

func (sqlTx *SQLTx) TxHeader() *store.TxHeader

func (*SQLTx) UpdatedRows added in v1.2.0

func (sqlTx *SQLTx) UpdatedRows() int

type SQLValueType

type SQLValueType = string
const (
	IntegerType   SQLValueType = "INTEGER"
	BooleanType   SQLValueType = "BOOLEAN"
	VarcharType   SQLValueType = "VARCHAR"
	BLOBType      SQLValueType = "BLOB"
	Float64Type   SQLValueType = "FLOAT"
	TimestampType SQLValueType = "TIMESTAMP"
	AnyType       SQLValueType = "ANY"
)

type ScanSpecs added in v1.1.0

type ScanSpecs struct {
	Index *Index

	DescOrder bool
	// contains filtered or unexported fields
}

type SelectStmt

type SelectStmt struct {
	// contains filtered or unexported fields
}

func NewSelectStmt added in v1.5.0

func NewSelectStmt(
	selectors []Selector,
	table string,
	where ValueExp,
	orderBy []*OrdCol,
	limit ValueExp,
	offset ValueExp,
) *SelectStmt

func (*SelectStmt) Alias

func (stmt *SelectStmt) Alias() string

func (*SelectStmt) Resolve

func (stmt *SelectStmt) Resolve(ctx context.Context, tx *SQLTx, params map[string]interface{}, _ *ScanSpecs) (ret RowReader, err error)

type Selector

type Selector interface {
	ValueExp
	// contains filtered or unexported methods
}

type SumValue

type SumValue struct {
	// contains filtered or unexported fields
}

func (*SumValue) ColBounded

func (v *SumValue) ColBounded() bool

func (*SumValue) Compare

func (v *SumValue) Compare(val TypedValue) (int, error)

func (*SumValue) IsNull added in v1.2.0

func (v *SumValue) IsNull() bool

func (*SumValue) RawValue added in v1.5.0

func (v *SumValue) RawValue() interface{}

func (*SumValue) Selector

func (v *SumValue) Selector() string

func (*SumValue) Type

func (v *SumValue) Type() SQLValueType

type Table

type Table struct {
	// contains filtered or unexported fields
}

func (*Table) Cols added in v1.1.0

func (t *Table) Cols() []*Column

func (*Table) ColsByName

func (t *Table) ColsByName() map[string]*Column

func (*Table) ColumnsByID added in v1.5.0

func (t *Table) ColumnsByID() map[uint32]*Column

func (*Table) Database

func (t *Table) Database() *Catalog

func (*Table) GetColumnByID

func (t *Table) GetColumnByID(id uint32) (*Column, error)

func (*Table) GetColumnByName

func (t *Table) GetColumnByName(name string) (*Column, error)

func (*Table) GetIndexByName added in v1.5.0

func (t *Table) GetIndexByName(name string) (*Index, error)

func (*Table) GetIndexes added in v1.5.0

func (t *Table) GetIndexes() []*Index

func (*Table) ID

func (t *Table) ID() uint32

func (*Table) IndexesByColID added in v1.1.0

func (t *Table) IndexesByColID(colID uint32) []*Index

func (*Table) IsIndexed

func (t *Table) IsIndexed(colName string) (indexed bool, err error)

func (*Table) Name

func (t *Table) Name() string

func (*Table) PrimaryIndex added in v1.1.0

func (t *Table) PrimaryIndex() *Index

type Timestamp added in v1.2.0

type Timestamp struct {
	// contains filtered or unexported fields
}

func (*Timestamp) Compare added in v1.2.0

func (v *Timestamp) Compare(val TypedValue) (int, error)

func (*Timestamp) IsNull added in v1.2.0

func (v *Timestamp) IsNull() bool

func (*Timestamp) RawValue added in v1.5.0

func (v *Timestamp) RawValue() interface{}

func (*Timestamp) Type added in v1.2.0

func (v *Timestamp) Type() SQLValueType

type TxOptions added in v1.5.0

type TxOptions struct {
	ReadOnly                bool
	SnapshotMustIncludeTxID func(lastPrecommittedTxID uint64) uint64
	SnapshotRenewalPeriod   time.Duration
	ExplicitClose           bool
	UnsafeMVCC              bool
}

func DefaultTxOptions added in v1.5.0

func DefaultTxOptions() *TxOptions

func (*TxOptions) Validate added in v1.5.0

func (opts *TxOptions) Validate() error

func (*TxOptions) WithExplicitClose added in v1.5.0

func (opts *TxOptions) WithExplicitClose(explicitClose bool) *TxOptions

func (*TxOptions) WithReadOnly added in v1.5.0

func (opts *TxOptions) WithReadOnly(readOnly bool) *TxOptions

func (*TxOptions) WithSnapshotMustIncludeTxID added in v1.5.0

func (opts *TxOptions) WithSnapshotMustIncludeTxID(snapshotMustIncludeTxID func(lastPrecommittedTxID uint64) uint64) *TxOptions

func (*TxOptions) WithSnapshotRenewalPeriod added in v1.5.0

func (opts *TxOptions) WithSnapshotRenewalPeriod(snapshotRenewalPeriod time.Duration) *TxOptions

func (*TxOptions) WithUnsafeMVCC added in v1.5.0

func (opts *TxOptions) WithUnsafeMVCC(unsafeMVCC bool) *TxOptions

type TypedValue

type TypedValue interface {
	ValueExp
	Type() SQLValueType
	RawValue() interface{}
	Compare(val TypedValue) (int, error)
	IsNull() bool
}

func DecodeValue

func DecodeValue(b []byte, colType SQLValueType) (TypedValue, int, error)

type UnionStmt added in v1.3.0

type UnionStmt struct {
	// contains filtered or unexported fields
}

func (*UnionStmt) Alias added in v1.3.0

func (stmt *UnionStmt) Alias() string

func (*UnionStmt) Resolve added in v1.3.0

func (stmt *UnionStmt) Resolve(ctx context.Context, tx *SQLTx, params map[string]interface{}, _ *ScanSpecs) (ret RowReader, err error)

type UpdateStmt added in v1.2.0

type UpdateStmt struct {
	// contains filtered or unexported fields
}

func NewUpdateStmt added in v1.5.0

func NewUpdateStmt(table string, where ValueExp, update *colUpdate) *UpdateStmt

type UpsertIntoStmt

type UpsertIntoStmt struct {
	// contains filtered or unexported fields
}

func NewUpserIntoStmt added in v1.5.0

func NewUpserIntoStmt(table string, cols []string, rows []*RowSpec, isInsert bool, onConflict *OnConflictDo) *UpsertIntoStmt

type UseDatabaseStmt

type UseDatabaseStmt struct {
	DB string
}

type UseSnapshotStmt

type UseSnapshotStmt struct {
	// contains filtered or unexported fields
}

type ValueExp

type ValueExp interface {
	// contains filtered or unexported methods
}

type Varchar

type Varchar struct {
	// contains filtered or unexported fields
}

func NewVarchar added in v1.5.0

func NewVarchar(val string) *Varchar

func (*Varchar) Compare

func (v *Varchar) Compare(val TypedValue) (int, error)

func (*Varchar) IsNull added in v1.2.0

func (v *Varchar) IsNull() bool

func (*Varchar) RawValue added in v1.5.0

func (v *Varchar) RawValue() interface{}

func (*Varchar) Type

func (v *Varchar) Type() SQLValueType

Jump to

Keyboard shortcuts

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