Documentation ¶
Index ¶
- func AssignInsertCasts(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 ComparisonCasts(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 ReplaceSerial(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)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssignInsertCasts ¶
func AssignInsertCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector) (sql.Node, transform.TreeIdentity, error)
AssignInsertCasts adds the appropriate assign casts for insertions.
func AssignUpdateCasts ¶
func AssignUpdateCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector) (sql.Node, transform.TreeIdentity, error)
AssignUpdateCasts adds the appropriate assign casts for updates.
func ComparisonCasts ¶
func ComparisonCasts(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector) (sql.Node, transform.TreeIdentity, error)
ComparisonCasts handles implicit conversions for comparisons. We cannot yet implement the comparison operators as GMS relies on specific expressions some cases. Eventually, we'll need to decouple the dependency, so that we may use the appropriate functions. This is technically incorrect, but should let us make progress until then.
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) (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 ReplaceSerial ¶
func ReplaceSerial(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector) (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 TypeSanitizer ¶
func TypeSanitizer(ctx *sql.Context, a *analyzer.Analyzer, node sql.Node, scope *plan.Scope, selector analyzer.RuleSelector) (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.
Types ¶
This section is empty.