Skip to content

Commit ed4d2c2

Browse files
authored
Merge pull request #4931 from turbot/v2.3.x
2 parents eba77de + a4b708b commit ed4d2c2

File tree

6 files changed

+82
-55
lines changed

6 files changed

+82
-55
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## v2.3.5 [2026-02-06]
2+
_Bug fixes_
3+
- Fix autocomplete regression where suggestions disappear when typing a table name after `from `. ([#4928](https://github.com/turbot/steampipe/issues/4928))
4+
5+
_Dependencies_
6+
- Updated `golang.org/x/crypto` package to remediate security vulnerabilities.
7+
18
## v2.3.4 [2025-12-16]
29
_Bug fixes_
310
- Fix database client deadlocks caused by concurrent session map access during connection pool cleanup. ([#4917](https://github.com/turbot/steampipe/issues/4917))

go.mod

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ require (
4545
github.com/turbot/terraform-components v0.0.0-20250114051614-04b806a9cbed
4646
github.com/zclconf/go-cty v1.16.3 // indirect
4747
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
48-
golang.org/x/sync v0.18.0
49-
golang.org/x/text v0.31.0
48+
golang.org/x/sync v0.19.0
49+
golang.org/x/text v0.33.0
5050
google.golang.org/grpc v1.73.0
5151
google.golang.org/protobuf v1.36.6
5252
)
@@ -177,10 +177,10 @@ require (
177177
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
178178
go.uber.org/multierr v1.11.0 // indirect
179179
golang.org/x/oauth2 v0.30.0 // indirect
180-
golang.org/x/sys v0.38.0
181-
golang.org/x/term v0.37.0 // indirect
180+
golang.org/x/sys v0.40.0
181+
golang.org/x/term v0.39.0 // indirect
182182
golang.org/x/time v0.12.0 // indirect
183-
golang.org/x/tools v0.38.0 // indirect
183+
golang.org/x/tools v0.40.0 // indirect
184184
google.golang.org/api v0.227.0 // indirect
185185
google.golang.org/genproto v0.0.0-20250313205543-e70fdf4c4cb4 // indirect
186186
google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 // indirect
@@ -224,9 +224,9 @@ require (
224224
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
225225
go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect
226226
go.uber.org/mock v0.4.0 // indirect
227-
golang.org/x/crypto v0.45.0 // indirect
228-
golang.org/x/mod v0.29.0 // indirect
229-
golang.org/x/net v0.47.0 // indirect
227+
golang.org/x/crypto v0.47.0 // indirect
228+
golang.org/x/mod v0.31.0 // indirect
229+
golang.org/x/net v0.48.0 // indirect
230230
)
231231

232232
require (

go.sum

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,8 +1349,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
13491349
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
13501350
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
13511351
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
1352-
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
1353-
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
1352+
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
1353+
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
13541354
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
13551355
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
13561356
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1413,8 +1413,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
14131413
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
14141414
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
14151415
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1416-
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
1417-
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
1416+
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
1417+
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
14181418
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
14191419
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
14201420
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1477,8 +1477,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
14771477
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
14781478
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
14791479
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
1480-
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
1481-
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
1480+
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
1481+
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
14821482
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
14831483
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
14841484
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1530,8 +1530,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
15301530
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
15311531
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
15321532
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
1533-
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
1534-
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
1533+
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
1534+
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
15351535
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
15361536
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
15371537
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1624,8 +1624,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
16241624
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
16251625
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
16261626
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1627-
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
1628-
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
1627+
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
1628+
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
16291629
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
16301630
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
16311631
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1640,8 +1640,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
16401640
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
16411641
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
16421642
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
1643-
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
1644-
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
1643+
golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=
1644+
golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
16451645
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
16461646
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
16471647
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1662,8 +1662,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
16621662
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
16631663
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
16641664
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
1665-
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
1666-
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
1665+
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
1666+
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
16671667
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
16681668
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
16691669
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1735,8 +1735,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
17351735
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
17361736
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
17371737
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
1738-
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
1739-
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
1738+
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
1739+
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
17401740
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
17411741
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
17421742
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

pkg/interactive/interactive_client_test.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -587,9 +587,10 @@ func TestInitialisationComplete_RaceCondition(t *testing.T) {
587587
//
588588
// This is important for autocomplete - when a user types "from " (with a space),
589589
// the system should recognize they are about to enter a table name and enable
590-
// table suggestions.
590+
// table suggestions. It should also remain true while typing a table name so
591+
// that autocomplete can filter suggestions as the user types.
591592
//
592-
// Bug: #4810
593+
// Bug: #4810, #4928
593594
func TestGetQueryInfo_FromDetection(t *testing.T) {
594595
tests := []struct {
595596
name string
@@ -598,23 +599,29 @@ func TestGetQueryInfo_FromDetection(t *testing.T) {
598599
expectedEditTable bool
599600
}{
600601
{
601-
name: "just_from",
602+
name: "just_from_with_space",
602603
input: "from ",
603604
expectedTable: "",
604-
expectedEditTable: true, // Should be true - user is about to enter table name
605+
expectedEditTable: true,
605606
},
606607
{
607-
name: "from_with_table",
608+
name: "from_typing_table",
608609
input: "from my_table",
609610
expectedTable: "my_table",
610-
expectedEditTable: false, // Not editing, already entered
611+
expectedEditTable: true, // Still editing - prevWord is "from"
611612
},
612613
{
613614
name: "from_keyword_only",
614615
input: "from",
615616
expectedTable: "",
616617
expectedEditTable: false,
617618
},
619+
{
620+
name: "from_table_done",
621+
input: "from my_table ",
622+
expectedTable: "my_table",
623+
expectedEditTable: false, // Done editing - prevWord is now "my_table"
624+
},
618625
}
619626

620627
for _, tt := range tests {

pkg/interactive/interactive_helpers.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,12 @@ func getQueryInfo(text string) *queryCompletionInfo {
1717

1818
return &queryCompletionInfo{
1919
Table: table,
20-
EditingTable: isEditingTable(text, prevWord),
20+
EditingTable: isEditingTable(prevWord),
2121
}
2222
}
2323

24-
func isEditingTable(text string, prevWord string) bool {
25-
// Only consider it editing table if:
26-
// 1. The previous word is "from"
27-
// 2. The text ends with a space (meaning cursor is after "from ", not in the middle of typing a table name)
28-
endsWithSpace := len(text) > 0 && text[len(text)-1] == ' '
29-
var editingTable = prevWord == "from" && endsWithSpace
30-
return editingTable
24+
func isEditingTable(prevWord string) bool {
25+
return prevWord == "from"
3126
}
3227

3328
func getTable(text string) string {

pkg/interactive/interactive_helpers_test.go

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -324,59 +324,53 @@ func TestGetTable(t *testing.T) {
324324
func TestIsEditingTable(t *testing.T) {
325325
tests := []struct {
326326
name string
327-
text string
328327
prevWord string
329328
expected bool
330329
}{
331330
{
332-
name: "from keyword with trailing space",
333-
text: "from ",
331+
name: "from keyword",
334332
prevWord: "from",
335333
expected: true,
336334
},
337-
{
338-
name: "from keyword without trailing space",
339-
text: "from",
340-
prevWord: "from",
341-
expected: false,
342-
},
343335
{
344336
name: "not from keyword",
345-
text: "select ",
346337
prevWord: "select",
347338
expected: false,
348339
},
349340
{
350341
name: "empty string",
351-
text: "",
352342
prevWord: "",
353343
expected: false,
354344
},
355345
{
356346
name: "FROM uppercase",
357-
text: "FROM ",
358347
prevWord: "FROM",
359348
expected: false,
360349
},
361350
{
362351
name: "whitespace",
363-
text: " from ",
364352
prevWord: " from ",
365353
expected: false,
366354
},
355+
{
356+
name: "table name after from",
357+
prevWord: "aws_s3_bucket",
358+
expected: false,
359+
},
367360
}
368361

369362
for _, tt := range tests {
370363
t.Run(tt.name, func(t *testing.T) {
371-
result := isEditingTable(tt.text, tt.prevWord)
364+
result := isEditingTable(tt.prevWord)
372365
if result != tt.expected {
373-
t.Errorf("isEditingTable(%q, %q) = %v, want %v", tt.text, tt.prevWord, result, tt.expected)
366+
t.Errorf("isEditingTable(%q) = %v, want %v", tt.prevWord, result, tt.expected)
374367
}
375368
})
376369
}
377370
}
378371

379-
// TestGetQueryInfo tests the getQueryInfo function (passing cases only)
372+
// TestGetQueryInfo tests the getQueryInfo function
373+
// Bug: #4928 - autocomplete suggestions disappear when typing table name after 'from '
380374
func TestGetQueryInfo(t *testing.T) {
381375
tests := []struct {
382376
name string
@@ -391,11 +385,35 @@ func TestGetQueryInfo(t *testing.T) {
391385
expectedEditing: true,
392386
},
393387
{
394-
name: "table specified",
388+
name: "typing table name after from",
389+
input: "select * from aws",
390+
expectedTable: "aws",
391+
expectedEditing: true,
392+
},
393+
{
394+
name: "typing partial table name",
395+
input: "select * from aws_s3",
396+
expectedTable: "aws_s3",
397+
expectedEditing: true,
398+
},
399+
{
400+
name: "typing qualified table name",
401+
input: "select * from aws.aws_s3_bucket",
402+
expectedTable: "aws.aws_s3_bucket",
403+
expectedEditing: true,
404+
},
405+
{
406+
name: "table specified with trailing space",
395407
input: "select * from users ",
396408
expectedTable: "users",
397409
expectedEditing: false,
398410
},
411+
{
412+
name: "past table into where clause",
413+
input: "select * from users where",
414+
expectedTable: "users",
415+
expectedEditing: false,
416+
},
399417
{
400418
name: "not at from clause",
401419
input: "select * ",

0 commit comments

Comments
 (0)