Skip to content

Commit 54f35df

Browse files
macneale4claude
andcommitted
Fix SET statements to return OkResult instead of empty rows
SET statements (system variables, user variables, and transaction settings) now return MySQL-compatible OkResult instead of empty rows, enabling proper "Query OK, 0 rows affected" confirmation messages in SQL clients. Changes: - Modified buildSet function in sql/rowexec/rel.go to return OkResult for system and user variable assignments - Updated all affected tests to expect types.NewOkResult(0) instead of empty row results - Preserves setup script behavior while fixing assertion expectations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 2f1daeb commit 54f35df

File tree

6 files changed

+32
-30
lines changed

6 files changed

+32
-30
lines changed

enginetest/enginetests.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4118,7 +4118,7 @@ func TestVariables(t *testing.T, harness Harness) {
41184118
},
41194119
{
41204120
Query: "SET GLOBAL select_into_buffer_size = 9001",
4121-
Expected: []sql.Row{{}},
4121+
Expected: []sql.Row{{types.NewOkResult(0)}},
41224122
},
41234123
{
41244124
Query: "SELECT @@SESSION.select_into_buffer_size",
@@ -4130,7 +4130,7 @@ func TestVariables(t *testing.T, harness Harness) {
41304130
},
41314131
{
41324132
Query: "SET @@GLOBAL.select_into_buffer_size = 9002",
4133-
Expected: []sql.Row{{}},
4133+
Expected: []sql.Row{{types.NewOkResult(0)}},
41344134
},
41354135
{
41364136
Query: "SELECT @@GLOBAL.select_into_buffer_size",
@@ -4139,7 +4139,7 @@ func TestVariables(t *testing.T, harness Harness) {
41394139
{
41404140
// For boolean types, OFF/ON is converted
41414141
Query: "SET @@GLOBAL.activate_all_roles_on_login = 'ON'",
4142-
Expected: []sql.Row{{}},
4142+
Expected: []sql.Row{{types.NewOkResult(0)}},
41434143
},
41444144
{
41454145
Query: "SELECT @@GLOBAL.activate_all_roles_on_login",
@@ -4148,7 +4148,7 @@ func TestVariables(t *testing.T, harness Harness) {
41484148
{
41494149
// For non-boolean types, OFF/ON is not converted
41504150
Query: "SET @@GLOBAL.delay_key_write = 'OFF'",
4151-
Expected: []sql.Row{{}},
4151+
Expected: []sql.Row{{types.NewOkResult(0)}},
41524152
},
41534153
{
41544154
Query: "SELECT @@GLOBAL.delay_key_write",
@@ -4174,7 +4174,7 @@ func TestVariables(t *testing.T, harness Harness) {
41744174
},
41754175
{
41764176
Query: "SET GLOBAL select_into_buffer_size = 131072",
4177-
Expected: []sql.Row{{}},
4177+
Expected: []sql.Row{{types.NewOkResult(0)}},
41784178
},
41794179
} {
41804180
t.Run(assertion.Query, func(t *testing.T) {

enginetest/queries/charset_collation_engine.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
463463
},
464464
{
465465
Query: "set @@session.character_set_connection = 'latin1';",
466-
Expected: []sql.Row{{}},
466+
Expected: []sql.Row{{types.NewOkResult(0)}},
467467
},
468468
{
469469
Query: "select @@session.character_set_connection, @@session.collation_connection;",
@@ -473,7 +473,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
473473
},
474474
{
475475
Query: "set @@session.collation_connection = 'utf8mb4_0900_bin';",
476-
Expected: []sql.Row{{}},
476+
Expected: []sql.Row{{types.NewOkResult(0)}},
477477
},
478478
{
479479
Query: "select @@session.character_set_connection, @@session.collation_connection;",
@@ -490,7 +490,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
490490
},
491491
{
492492
Query: "set @@global.character_set_connection = 'latin1';",
493-
Expected: []sql.Row{{}},
493+
Expected: []sql.Row{{types.NewOkResult(0)}},
494494
},
495495
{
496496
Query: "select @@global.character_set_connection, @@global.collation_connection;",
@@ -500,7 +500,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
500500
},
501501
{
502502
Query: "set @@global.collation_connection = 'utf8mb4_0900_bin';",
503-
Expected: []sql.Row{{}},
503+
Expected: []sql.Row{{types.NewOkResult(0)}},
504504
},
505505
{
506506
Query: "select @@global.character_set_connection, @@global.collation_connection;",
@@ -517,7 +517,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
517517
},
518518
{
519519
Query: "set @@session.character_set_server = 'latin1';",
520-
Expected: []sql.Row{{}},
520+
Expected: []sql.Row{{types.NewOkResult(0)}},
521521
},
522522
{
523523
Query: "select @@session.character_set_server, @@session.collation_server;",
@@ -527,7 +527,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
527527
},
528528
{
529529
Query: "set @@session.collation_server = 'utf8mb4_0900_bin';",
530-
Expected: []sql.Row{{}},
530+
Expected: []sql.Row{{types.NewOkResult(0)}},
531531
},
532532
{
533533
Query: "select @@session.character_set_server, @@session.collation_server;",
@@ -544,7 +544,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
544544
},
545545
{
546546
Query: "set @@global.character_set_server = 'latin1';",
547-
Expected: []sql.Row{{}},
547+
Expected: []sql.Row{{types.NewOkResult(0)}},
548548
},
549549
{
550550
Query: "select @@global.character_set_server, @@global.collation_server;",
@@ -554,7 +554,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
554554
},
555555
{
556556
Query: "set @@global.collation_server = 'utf8mb4_0900_bin';",
557-
Expected: []sql.Row{{}},
557+
Expected: []sql.Row{{types.NewOkResult(0)}},
558558
},
559559
{
560560
Query: "select @@global.character_set_server, @@global.collation_server;",
@@ -696,7 +696,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
696696
},
697697
{
698698
Query: "SET collation_connection = 'utf8mb4_0900_bin';",
699-
Expected: []sql.Row{{}},
699+
Expected: []sql.Row{{types.NewOkResult(0)}},
700700
},
701701
{
702702
Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';",
@@ -756,7 +756,7 @@ var CharsetCollationEngineTests = []CharsetCollationEngineTest{
756756
},
757757
{
758758
Query: "SET collation_connection = 'utf8mb4_0900_bin';",
759-
Expected: []sql.Row{{}},
759+
Expected: []sql.Row{{types.NewOkResult(0)}},
760760
},
761761
{
762762
Query: "SELECT 'abc' LIKE 'ABC';",

enginetest/queries/charset_collation_wire.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{
476476
},
477477
{
478478
Query: "SET collation_connection = 'utf8mb4_0900_bin';",
479-
Expected: []sql.Row{{}},
479+
Expected: []sql.Row{{types.NewOkResult(0)}},
480480
},
481481
{
482482
Query: "SELECT COUNT(*) FROM test WHERE v1 LIKE 'ABC';",
@@ -536,7 +536,7 @@ var CharsetCollationWireTests = []CharsetCollationWireTest{
536536
},
537537
{
538538
Query: "SET collation_connection = 'utf8mb4_0900_bin';",
539-
Expected: []sql.Row{{}},
539+
Expected: []sql.Row{{types.NewOkResult(0)}},
540540
},
541541
{
542542
Query: "SELECT 'abc' LIKE 'ABC';",

enginetest/queries/queries.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5687,15 +5687,15 @@ SELECT * FROM cte WHERE d = 2;`,
56875687
sql.Collation_Default.CharacterSet().String() +
56885688
" */",
56895689
Expected: []sql.Row{
5690-
{},
5690+
{types.NewOkResult(0)},
56915691
},
56925692
},
56935693
{
56945694
Query: "SET collation_connection = '" +
56955695
sql.Collation_Default.String() +
56965696
"';",
56975697
Expected: []sql.Row{
5698-
{},
5698+
{types.NewOkResult(0)},
56995699
},
57005700
},
57015701
{

enginetest/queries/variable_queries.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var VariableQueries = []ScriptTest{
3232
Name: "use string name for foreign_key checks",
3333
SetUpScript: []string{},
3434
Query: "set @@foreign_key_checks = off;",
35-
Expected: []sql.Row{{}},
35+
Expected: []sql.Row{{types.NewOkResult(0)}},
3636
},
3737
{
3838
Name: "set system variables",
@@ -115,15 +115,15 @@ var VariableQueries = []ScriptTest{
115115
},
116116
{
117117
Query: "set @@server_id=123;",
118-
Expected: []sql.Row{{}},
118+
Expected: []sql.Row{{types.NewOkResult(0)}},
119119
},
120120
{
121121
Query: "set @@GLOBAL.server_id=123;",
122-
Expected: []sql.Row{{}},
122+
Expected: []sql.Row{{types.NewOkResult(0)}},
123123
},
124124
{
125125
Query: "set @@GLOBAL.server_id=0;",
126-
Expected: []sql.Row{{}},
126+
Expected: []sql.Row{{types.NewOkResult(0)}},
127127
},
128128
},
129129
},
@@ -523,47 +523,47 @@ var VariableQueries = []ScriptTest{
523523
Assertions: []ScriptTestAssertion{
524524
{
525525
Query: "set transaction isolation level serializable, read only",
526-
Expected: []sql.Row{{}},
526+
Expected: []sql.Row{{types.NewOkResult(0)}},
527527
},
528528
{
529529
Query: "select @@transaction_isolation, @@transaction_read_only",
530530
Expected: []sql.Row{{"SERIALIZABLE", 1}},
531531
},
532532
{
533533
Query: "set transaction read write, isolation level read uncommitted",
534-
Expected: []sql.Row{{}},
534+
Expected: []sql.Row{{types.NewOkResult(0)}},
535535
},
536536
{
537537
Query: "select @@transaction_isolation, @@transaction_read_only",
538538
Expected: []sql.Row{{"READ-UNCOMMITTED", 0}},
539539
},
540540
{
541541
Query: "set transaction isolation level read committed",
542-
Expected: []sql.Row{{}},
542+
Expected: []sql.Row{{types.NewOkResult(0)}},
543543
},
544544
{
545545
Query: "select @@transaction_isolation",
546546
Expected: []sql.Row{{"READ-COMMITTED"}},
547547
},
548548
{
549549
Query: "set transaction isolation level repeatable read",
550-
Expected: []sql.Row{{}},
550+
Expected: []sql.Row{{types.NewOkResult(0)}},
551551
},
552552
{
553553
Query: "select @@transaction_isolation",
554554
Expected: []sql.Row{{"REPEATABLE-READ"}},
555555
},
556556
{
557557
Query: "set session transaction isolation level serializable, read only",
558-
Expected: []sql.Row{{}},
558+
Expected: []sql.Row{{types.NewOkResult(0)}},
559559
},
560560
{
561561
Query: "select @@transaction_isolation, @@transaction_read_only",
562562
Expected: []sql.Row{{"SERIALIZABLE", 1}},
563563
},
564564
{
565565
Query: "set global transaction read write, isolation level read uncommitted",
566-
Expected: []sql.Row{{}},
566+
Expected: []sql.Row{{types.NewOkResult(0)}},
567567
},
568568
{
569569
Query: "select @@transaction_isolation, @@transaction_read_only",

sql/rowexec/rel.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,9 +386,11 @@ func (b *BaseBuilder) buildSet(ctx *sql.Context, n *plan.Set, row sql.Row) (sql.
386386
}
387387
copy(resultRow, row)
388388
resultRow = row.Append(newRow)
389+
return sql.RowsToRowIter(resultRow), nil
389390
}
390391

391-
return sql.RowsToRowIter(resultRow), nil
392+
// For system and user variable SET statements, return OkResult like MySQL does
393+
return sql.RowsToRowIter(sql.NewRow(types.NewOkResult(0))), nil
392394
}
393395

394396
func (b *BaseBuilder) buildGroupBy(ctx *sql.Context, n *plan.GroupBy, row sql.Row) (sql.RowIter, error) {

0 commit comments

Comments
 (0)