Skip to content

Commit 28046f4

Browse files
author
James Cor
committed
Merge branch 'main' into james/std
2 parents 9923ece + cfa1678 commit 28046f4

File tree

20 files changed

+343
-204
lines changed

20 files changed

+343
-204
lines changed

enginetest/queries/queries.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5206,6 +5206,17 @@ SELECT * FROM cte WHERE d = 2;`,
52065206
Query: "SELECT CAST(-3 AS DOUBLE) FROM dual",
52075207
Expected: []sql.Row{{-3.0}},
52085208
},
5209+
{
5210+
Query: "SELECT BINARY c, BINARY vc, BINARY t, BINARY b, BINARY vb, BINARY bl FROM niltexttable",
5211+
Expected: []sql.Row{
5212+
{nil, nil, nil, nil, nil, nil},
5213+
{[]byte("2"), nil, []byte("2"), nil, []byte("2"), nil},
5214+
{nil, []byte("3"), []byte("3"), nil, nil, []byte("3")},
5215+
{[]byte("4"), []byte("4"), nil, []byte("4\x00"), nil, nil},
5216+
{nil, nil, nil, []byte("5\x00"), []byte("5"), []byte("5")},
5217+
{[]byte("6"), []byte("6"), []byte("6"), []byte("6\x00"), []byte("6"), []byte("6")},
5218+
},
5219+
},
52095220
{
52105221
Query: `SELECT CONVERT("-3.9876", FLOAT) FROM dual`,
52115222
Expected: []sql.Row{{float32(-3.9876)}},

enginetest/scriptgen/setup/scripts/niltable

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,26 @@ insert into niltable values
2121
exec
2222
create index niltable_i2 on niltable (i2)
2323
----
24+
25+
exec
26+
CREATE TABLE `niltexttable` (
27+
`i` bigint NOT NULL,
28+
`c` char(2),
29+
`vc` varchar(2),
30+
`t` text,
31+
`b` binary(2),
32+
`vb` varbinary(2),
33+
`bl` blob,
34+
PRIMARY KEY (`i`)
35+
)
36+
----
37+
38+
exec
39+
insert into niltexttable values
40+
(1, null, null, null, null, null, null),
41+
(2, '2', null, '2', null, '2', null),
42+
(3, null, '3', '3', null, null, '3'),
43+
(4, '4', '4', null, '4', null, null),
44+
(5, null, null, null, '5', '5', '5'),
45+
(6, '6', '6', '6', '6', '6', '6')
46+
----

enginetest/scriptgen/setup/setup_data.sg.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad
77
github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71
88
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
9-
github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3
9+
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c
1010
github.com/go-kit/kit v0.10.0
1111
github.com/go-sql-driver/mysql v1.7.2-0.20231213112541-0004702b931d
1212
github.com/gocraft/dbr/v2 v2.7.2

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 h1:7/v8q9X
6060
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
6161
github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3 h1:euU+adNAYw46Zcp1HnoaSDWhqjfaL8s/1SPU+i16gYM=
6262
github.com/dolthub/vitess v0.0.0-20250325024605-8131be3ca6d3/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
63+
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c h1:hl+yPanHdJML9aMB0MgrTCpzsd3jIf/o3r8pC6Tqx6E=
64+
github.com/dolthub/vitess v0.0.0-20250409183615-d8335325e91c/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70=
6365
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
6466
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
6567
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=

memory/table.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func stripTblNames(e sql.Expression) (sql.Expression, transform.TreeIdentity, er
134134
case *expression.GetField:
135135
// strip table names
136136
ne := expression.NewGetField(e.Index(), e.Type(), e.Name(), e.IsNullable())
137-
ne = ne.WithQuotedNames(sql.GlobalParser, e.IsQuotedIdentifier())
137+
ne = ne.WithQuotedNames(sql.GlobalSchemaFormatter, e.IsQuotedIdentifier())
138138
return ne, transform.NewTree, nil
139139
default:
140140
}

sql/analyzer/analyzer.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,15 @@ func (ab *Builder) Build() *Analyzer {
264264
}
265265

266266
return &Analyzer{
267-
Debug: debug || ab.debug,
268-
Verbose: verbose,
269-
contextStack: make([]string, 0),
270-
Batches: batches,
271-
Catalog: NewCatalog(ab.provider),
272-
Coster: memo.NewDefaultCoster(),
273-
ExecBuilder: rowexec.DefaultBuilder,
274-
Parser: sql.GlobalParser,
267+
Debug: debug || ab.debug,
268+
Verbose: verbose,
269+
contextStack: make([]string, 0),
270+
Batches: batches,
271+
Catalog: NewCatalog(ab.provider),
272+
Coster: memo.NewDefaultCoster(),
273+
ExecBuilder: rowexec.DefaultBuilder,
274+
Parser: sql.GlobalParser,
275+
SchemaFormatter: sql.GlobalSchemaFormatter,
275276
}
276277
}
277278

@@ -296,6 +297,8 @@ type Analyzer struct {
296297
Runner StatementRunner
297298
// Parser is the parser used to parse SQL statements.
298299
Parser sql.Parser
300+
// SchemaFormatter is used to format the schema of a node to a string.
301+
SchemaFormatter sql.SchemaFormatter
299302
}
300303

301304
// NewDefault creates a default Analyzer instance with all default Rules and configuration.

sql/analyzer/resolve_column_defaults.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ func quoteDefaultColumnValueNames(ctx *sql.Context, a *Analyzer, n sql.Node, _ *
315315
switch node := n.(type) {
316316
case *plan.AlterDefaultSet:
317317
eWrapper := expression.WrapExpression(node.Default)
318-
newExpr, same, err := quoteIdentifiers(a.Parser, eWrapper)
318+
newExpr, same, err := quoteIdentifiers(a.SchemaFormatter, eWrapper)
319319
if err != nil {
320320
return node, transform.SameTree, err
321321
}
@@ -335,7 +335,7 @@ func quoteDefaultColumnValueNames(ctx *sql.Context, a *Analyzer, n sql.Node, _ *
335335
return e, transform.SameTree, nil
336336
}
337337

338-
return quoteIdentifiers(a.Parser, eWrapper)
338+
return quoteIdentifiers(a.SchemaFormatter, eWrapper)
339339
})
340340
case *plan.ResolvedTable:
341341
ct, ok := node.Table.(*information_schema.ColumnsTable)
@@ -354,7 +354,7 @@ func quoteDefaultColumnValueNames(ctx *sql.Context, a *Analyzer, n sql.Node, _ *
354354
return e, transform.SameTree, nil
355355
}
356356

357-
return quoteIdentifiers(a.Parser, eWrapper)
357+
return quoteIdentifiers(a.SchemaFormatter, eWrapper)
358358
})
359359

360360
if err != nil {
@@ -376,7 +376,7 @@ func quoteDefaultColumnValueNames(ctx *sql.Context, a *Analyzer, n sql.Node, _ *
376376
})
377377
}
378378

379-
func quoteIdentifiers(parser sql.Parser, wrap *expression.Wrapper) (sql.Expression, transform.TreeIdentity, error) {
379+
func quoteIdentifiers(schemaFormatter sql.SchemaFormatter, wrap *expression.Wrapper) (sql.Expression, transform.TreeIdentity, error) {
380380
newDefault, ok := wrap.Unwrap().(*sql.ColumnDefaultValue)
381381
if !ok {
382382
return wrap, transform.SameTree, nil
@@ -388,7 +388,7 @@ func quoteIdentifiers(parser sql.Parser, wrap *expression.Wrapper) (sql.Expressi
388388

389389
newExpr, same, err := transform.Expr(newDefault.Expr, func(expr sql.Expression) (sql.Expression, transform.TreeIdentity, error) {
390390
if e, isGf := expr.(*expression.GetField); isGf {
391-
return e.WithQuotedNames(parser, true), transform.NewTree, nil
391+
return e.WithQuotedNames(schemaFormatter, true), transform.NewTree, nil
392392
}
393393
return expr, transform.SameTree, nil
394394
})

sql/auth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,5 @@ func GetAuthorizationHandlerFactory() AuthorizationHandlerFactory {
8484
if globalAuthorizationHandlerFactory != nil {
8585
return globalAuthorizationHandlerFactory
8686
}
87-
return emptyAuthorizationHandlerFactory{}
87+
return NoopAuthorizationHandlerFactory{}
8888
}

sql/auth_empty.go

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)