8000 Use new sql.LiteralExpression by zachmu · Pull Request #9127 · dolthub/dolt · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Use new sql.LiteralExpression #9127

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ require (
github.com/creasty/defaults v1.6.0
github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12
github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2
github.com/dolthub/go-mysql-server v0.19.1-0.20250417175424-f6c04d7aec8d
github.com/dolthub/go-mysql-server v0.19.1-0.20250417231730-fcd059390dd6
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63
github.com/esote/minmaxheap v1.0.0
github.com/goccy/go-json v0.10.2
Expand Down
4 changes: 2 additions & 2 deletions go/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U=
github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0=
github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g=
github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA=
github.com/dolthub/go-mysql-server v0.19.1-0.20250417175424-f6c04d7aec8d h1:Dhyd5oDq+4enyCdyyqPEr+hKNZAZJcF3ZqJ0Wn5yc4s=
github.com/dolthub/go-mysql-server v0.19.1-0.20250417175424-f6c04d7aec8d/go.mod h1:bOB8AJAqzKtYw/xDA9UININeFU1Il4eYEqSP3lZOqIA=
github.com/dolthub/go-mysql-server v0.19.1-0.20250417231730-fcd059390dd6 h1:mqr/9yLWqM8eMxxQ9/ruRpdJmyC6hR0K9AMiafqnLiE=
github.com/dolthub/go-mysql-server v0.19.1-0.20250417231730-fcd059390dd6/go.mod h1:bOB8AJAqzKtYw/xDA9UININeFU1Il4eYEqSP3lZOqIA=
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI=
github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q=
github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE=
Expand Down
17 changes: 8 additions & 9 deletions go/libraries/doltcore/sqle/expreval/compare_ops.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,18 @@ import (
"context"

"github.com/dolthub/go-mysql-server/sql"
"github.com/dolthub/go-mysql-server/sql/expression"

"github.com/dolthub/dolt/go/store/types"
)

func compareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (int, error) {
return l1.Type().Compare(ctx, l1.Value(), l2.Value())
func compareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (int, error) {
return l1.Type().Compare(ctx, l1.LiteralValue(), l2.LiteralValue())
}

// CompareOp is an interface for comparing values
type CompareOp interface {
// CompareLiterals compares two go-mysql-server literals
CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error)
CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error)
// CompareNomsValues compares two noms values
CompareNomsValues(ctx context.Context, v1, v2 types.Value) (bool, error)
// CompareToNil compares a noms value to nil using sql logic rules
Expand All @@ -41,7 +40,7 @@ type CompareOp interface {
type EqualsOp struct{}

// CompareLiterals compares two go-mysql-server literals for equality
func (op EqualsOp) CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error) {
func (op EqualsOp) CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error) {
n, err := compareLiterals(ctx, l1, l2)

if err != nil {
Expand Down Expand Up @@ -72,7 +71,7 @@ type GreaterOp struct {

// CompareLiterals compares two go-mysql-server literals returning true if the value of the first
// is greater than the second.
func (op GreaterOp) CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error) {
func (op GreaterOp) CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error) {
n, err := compareLiterals(ctx, l1, l2)

if err != nil {
Expand Down Expand Up @@ -112,7 +111,7 @@ type GreaterEqualOp struct {

// CompareLiterals compares two go-mysql-server literals returning true if the value of the first
// is greater than or equal to the second.
func (op GreaterEqualOp) CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error) {
func (op GreaterEqualOp) CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error) {
n, err := compareLiterals(ctx, l1, l2)

if err != nil {
Expand Down Expand Up @@ -146,7 +145,7 @@ type LessOp struct {

// CompareLiterals compares two go-mysql-server literals returning true if the value of the first
// is less than the second.
func (op LessOp) CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error) {
func (op LessOp) CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error) {
n, err := compareLiterals(ctx, l1, l2)

if err != nil {
Expand Down Expand Up @@ -174,7 +173,7 @@ type LessEqualOp struct {

// CompareLiterals compares two go-mysql-server literals returning true if the value of the first
// is less than or equal to the second.
func (op LessEqualOp) CompareLiterals(ctx *sql.Context, l1, l2 *expression.Literal) (bool, error) {
func (op LessEqualOp) CompareLiterals(ctx *sql.Context, l1, l2 sql.LiteralExpression) (bool, error) {
n, err := compareLiterals(ctx, l1, l2)

if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions go/libraries/doltcore/sqle/expreval/expression_evaluator.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,9 @@ const (

// GetComparisonType looks at a go-mysql-server BinaryExpression classifies the left and right arguments
// as variables or constants.
func GetComparisonType(be expression.BinaryExpression) ([]*expression.GetField, []*expression.Literal, ComparisonType, error) {
func GetComparisonType(be expression.BinaryExpression) ([]*expression.GetField, []sql.LiteralExpression, ComparisonType, error) {
var variables []*expression.GetField
var consts []*expression.Literal
var consts []sql.LiteralExpression

for _, curr := range []sql.Expression{be.Left(), be.Right()} {
// need to remove this and handle properly
Expand All @@ -184,12 +184,12 @@ func GetComparisonType(be expression.BinaryExpression) ([]*expression.GetField,
switch v := curr.(type) {
case *expression.GetField:
variables = append(variables, v)
case *expression.Literal:
case sql.LiteralExpression:
consts = append(consts, v)
case expression.Tuple:
children := v.Children()
for _, currChild := range children {
lit, ok := currChild.(*expression.Literal)
lit, ok := currChild.(sql.LiteralExpression)
if !ok {
return nil, nil, InvalidCompare, errUnsupportedComparisonType.New()
}
Expand Down
30 changes: 15 additions & 15 deletions go/libraries/doltcore/sqle/expreval/literal_helpers.go
6D47
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ import (
"strconv"
"time"

"github.com/dolthub/go-mysql-server/sql/expression"
"github.com/dolthub/go-mysql-server/sql"
gmstypes "github.com/dolthub/go-mysql-server/sql/types"

"github.com/dolthub/dolt/go/store/types"
)

func literalAsInt64(literal *expression.Literal) (int64, error) {
v := literal.Value()
func literalAsInt64(literal sql.LiteralExpression) (int64, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case bool:
if typedVal {
Expand Down Expand Up @@ -78,8 +78,8 @@ func literalAsInt64(literal *expression.Literal) (int64, error) {
return 0, errInvalidConversion.New(literal.String(), literal.Type().String(), "int64")
}

func literalAsUint64(literal *expression.Literal) (uint64, error) {
v := literal.Value()
func literalAsUint64(literal sql.LiteralExpression) (uint64, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case bool:
if typedVal {
Expand Down Expand Up @@ -152,8 +152,8 @@ func literalAsUint64(literal *expression.Literal) (uint64, error) {
return 0, errInvalidConversion.New(literal.String(), literal.Type().String(), "int64")
}

func literalAsFloat64(literal *expression.Literal) (float64, error) {
v := literal.Value()
func literalAsFloat64(literal sql.LiteralExpression) (float64, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case int:
return float64(typedVal), nil
Expand Down Expand Up @@ -186,8 +186,8 @@ func literalAsFloat64(literal *expression.Literal) (float64, error) {
return 0, errInvalidConversion.New(literal.String(), literal.Type().String(), "float64")
}

func literalAsBool(literal *expression.Literal) (bool, error) {
v := literal.Value()
func literalAsBool(literal sql.LiteralExpression) (bool, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case bool:
return typedVal, nil
Expand Down Expand Up @@ -224,8 +224,8 @@ func literalAsBool(literal *expression.Literal) (bool, error) {
return false, errInvalidConversion.New(literal.String(), literal.Type().String(), "bool")
}

func literalAsString(literal *expression.Literal) (string, error) {
v := literal.Value()
func literalAsString(literal sql.LiteralExpression) (string, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case string:
return typedVal, nil
Expand Down Expand Up @@ -257,8 +257,8 @@ func parseDate(s string) (time.Time, error) {
return time.Time{}, gmstypes.ErrConvertingToTime.New(s)
}

func literalAsTimestamp(literal *expression.Literal) (time.Time, error) {
v := literal.Value()
func literalAsTimestamp(literal sql.LiteralExpression) (time.Time, error) {
v := literal.LiteralValue()
switch typedVal := v.(type) {
case time.Time:
return typedVal, nil
Expand All @@ -276,8 +276,8 @@ func literalAsTimestamp(literal *expression.Literal) (time.Time, error) {
}

// LiteralToNomsValue converts a go-mysql-servel Literal into a noms value.
func LiteralToNomsValue(kind types.NomsKind, literal *expression.Literal) (types.Value, error) {
if literal.Value() == nil {
func LiteralToNomsValue(kind types.NomsKind, literal sql.LiteralExpression) (types.Value, error) {
if literal.LiteralValue() == nil {
return types.NullValue, nil
}

Expand Down
4 changes: 2 additions & 2 deletions go/libraries/doltcore/sqle/history_table.go
Original file line number Diff line number Diff line change
Expand Up @@ -242,8 +242,8 @@ func substituteWorkingHash(h hash.Hash, f []sql.Expression) []sql.Expression {
for i, e := range f {
ret[i], _, _ = transform.Expr(e, func(e sql.Expression) (sql.Expression, transform.TreeIdentity, error) {
switch e := e.(type) {
case *expression.Literal:
if str, isStr := e.Value().(string); isStr {
case sql.LiteralExpression:
if str, isStr := e.LiteralValue().(string); isStr {
if strings.EqualFold(str, doltdb.Working) || strings.EqualFold(str, doltdb.Staged) {
return expression.NewLiteral(h.String(), e.Type()), transform.NewTree, nil
}
Expand Down
2 changes: 1 addition & 1 deletion go/libraries/doltcore/sqle/kvexec/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ func getIta(n sql.Node) (*plan.IndexedTableAccess, bool) {
func simpleLookupExpressions(keyExprs []sql.Expression) bool {
for _, e := range keyExprs {
switch e.(type) {
case *expression.Literal, *expression.GetField:
case sql.LiteralExpression, *expression.GetField:
default:
return false
}
Expand Down
2 changes: 1 addition & 1 deletion go/libraries/doltcore/sqle/kvexec/count_agg.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func newCountAggregationKvIter(srcIter prolly.MapIter, sch schema.Schema, e sql.
var isKeyRef bool

switch e := e.(type) {
case *expression.Literal:
case sql.LiteralExpression:
nullable = false
case *expression.GetField:
// name -> tag -> position in source key/val
Expand Down
6 changes: 3 additions & 3 deletions go/libraries/doltcore/sqle/kvexec/lookup_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func newLookupKvIter(
excludeNulls bool,
) (*lookupJoinKvIter, error) {
if lit, ok := joinFilter.(*expression.Literal); ok {
if lit.Value() == true {
if lit.LiteralValue() == true {
joinFilter = nil
}
}
Expand Down Expand Up @@ -233,7 +233,7 @@ func newLookupKeyMapping(ctx context.Context, sourceSch schema.Schema, tgtKeyDes
} else {
srcMapping[i] = split + sourceSch.GetNonPKCols().TagToIdx[col.Tag]
}
case *expression.Literal:
case sql.LiteralExpression:
srcMapping[i] = -1
litMappings = append(litMappings, i)
litTypes = append(litTypes, tgtKeyDesc.Types[i])
Expand All @@ -242,7 +242,7 @@ func newLookupKeyMapping(ctx context.Context, sourceSch schema.Schema, tgtKeyDes
litDesc := val.NewTupleDescriptor(litTypes...)
litTb := val.NewTupleBuilder(litDesc, ns)
for i, j := range litMappings {
val := keyExprs[j].(*expression.Literal).Value()
val := keyExprs[j].(sql.LiteralExpression).LiteralValue()
val, _, err := typs[j].Type.Convert(ctx, val)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion go/libraries/doltcore/sqle/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ func (t *DoltTable) LookupForExpressions(ctx *sql.Context, exprs ...sql.Expressi
}
}
if matched {
if err := rb.AddEquality(ctx, matchIdx, c2.Lit.Value()); err != nil {
if err := rb.AddEquality(ctx, matchIdx, c2.Lit.LiteralValue()); err != nil {
return sql.IndexLookup{}, nil, nil, false, nil
}
}
Expand Down
Loading
0