Documentation
¶
Index ¶
- func AddDomainConstraints(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func AddDomainConstraintsToCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func AssignInsertCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func AssignTriggers(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func AssignUpdateCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func Init()
- func InsertContextRootFinalizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func IsAggregateFunc(name string) bool
- func OptimizeFunctions(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ReplaceArithmeticExpressions(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ReplaceIndexedTables(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ReplaceNode(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ReplaceSerial(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ResolveType(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ResolveTypeForExprs(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ResolveTypeForNodes(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func TypeSanitizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
- func ValidateColumnDefaults(ctx *sql.Context, _ *analyzer.Analyzer, n sql.Node, _ *plan.Scope, ...) (sql.Node, transform.TreeIdentity, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddDomainConstraints ¶ added in v0.14.0
func AddDomainConstraints(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
AddDomainConstraints adds domain type's default value and check constraints to the destination table schema and InsertNode/Update node's checks.
func AddDomainConstraintsToCasts ¶ added in v0.16.0
func AddDomainConstraintsToCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
AddDomainConstraintsToCasts adds domain type's constraints to cast expressions.
func AssignInsertCasts ¶
func AssignInsertCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
AssignInsertCasts adds the appropriate assign casts for insertions.
func AssignTriggers ¶ added in v0.50.1
func AssignTriggers(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
AssignTriggers assigns triggers wherever they're needed.
func AssignUpdateCasts ¶
func AssignUpdateCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
AssignUpdateCasts adds the appropriate assign casts for updates.
func Init ¶
func Init()
Init adds additional rules to the analyzer to handle Doltgres-specific functionality.
func InsertContextRootFinalizer ¶
func InsertContextRootFinalizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
InsertContextRootFinalizer inserts a ContextRootFinalizer node right before the transaction commits, yet after all other nodes have finished. This ensures that the ContextRootFinalizer does not overwrite any changes from its children.
func IsAggregateFunc ¶ added in v0.51.0
IsAggregateFunc checks if the given function name is an aggregate function. This is the entire set supported by MySQL plus some postgres specific ones.
func OptimizeFunctions ¶ added in v0.16.0
func OptimizeFunctions(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
OptimizeFunctions replaces all functions that fit specific criteria with their optimized variants. Also handles SRFs (set-returning functions) by setting the `IncludesNestedIters` flag on the Project node if any SRF is found.
func ReplaceArithmeticExpressions ¶ added in v0.16.0
func ReplaceArithmeticExpressions(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ReplaceArithmeticExpressions replaces arithmetic expressions in the tree with the equivalent binary operators. This is a problem in certain nodes that do arithmetic, such as TopN, but all nodes are covered.
func ReplaceIndexedTables ¶ added in v0.12.0
func ReplaceIndexedTables(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ReplaceIndexedTables replaces Dolt tables with Doltgres tables that can properly handle indexed access.
func ReplaceNode ¶ added in v0.17.0
func ReplaceNode(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ReplaceNode is used to replace generic top-level nodes with Doltgres versions that wrap them, without performing any additional analysis. This is used to handle relatively straightforward tasks, like delete cascading, etc.
func ReplaceSerial ¶
func ReplaceSerial(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ReplaceSerial replaces a CreateTable node containing a SERIAL type with a node that can create sequences alongside the table.
func ResolveType ¶ added in v0.14.0
func ResolveType(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ResolveType replaces types.ResolvableType to appropriate pgtypes.DoltgresType.
func ResolveTypeForExprs ¶ added in v0.16.0
func ResolveTypeForExprs(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ResolveTypeForExprs replaces types.ResolvableType to appropriate pgtypes.DoltgresType.
func ResolveTypeForNodes ¶ added in v0.16.0
func ResolveTypeForNodes(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
ResolveTypeForNodes replaces types.ResolvableType to appropriate pgtypes.DoltgresType.
func TypeSanitizer ¶
func TypeSanitizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
TypeSanitizer converts all GMS types into Doltgres types. Some places, such as parameter binding, will always default to GMS types, so by taking care of all conversions here, we can ensure that Doltgres only needs to worry about its own types.
func ValidateColumnDefaults ¶ added in v0.17.0
func ValidateColumnDefaults(ctx *sql.Context, _ *analyzer.Analyzer, n sql.Node, _ *plan.Scope, _ analyzer.RuleSelector, qFlags *sql.QueryFlags) (sql.Node, transform.TreeIdentity, error)
validateColumnDefaults ensures that newly created column defaults from a DDL statement are legal for the type of column, various other business logic checks to match MySQL's logic.
Types ¶
This section is empty.
Source Files
¶
- apply_analyze_all_tables.go
- assign_insert_casts.go
- assign_triggers.go
- assign_update_casts.go
- convert_drop_primary_key_constraint.go
- domain_constraints.go
- foreign_key.go
- generate_fk_name.go
- init.go
- insert_context_root_finalizer.go
- optimize_functions.go
- replace_arithmetic_expressions.go
- replace_indexed_tables.go
- replace_node.go
- resolve_type.go
- serial.go
- type_sanitizer.go
- validate_column_defaults.go
- validate_create_table.go