MCPcopy Create free account
hub / github.com/bytebase/bytebase / TestExtractTableRefs

Function TestExtractTableRefs

backend/plugin/parser/mysql/query_span_test.go:130–188  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

128}
129
130func TestExtractTableRefs(t *testing.T) {
131 tests := []struct {
132 statement string
133 expected []base.SchemaResource
134 }{
135 {
136 statement: "SELECT * FROM t1 WHERE c1 = 1;",
137 expected: []base.SchemaResource{
138 {
139 Database: "db",
140 Table: "t1",
141 },
142 },
143 },
144 {
145 statement: "SELECT * FROM db1.t1 JOIN db2.t2 ON t1.c1 = t2.c1;",
146 expected: []base.SchemaResource{
147 {
148 Database: "db1",
149 Table: "t1",
150 },
151 {
152 Database: "db2",
153 Table: "t2",
154 },
155 },
156 },
157 {
158 statement: "SELECT a > (select max(a) from t1) FROM t2;",
159 expected: []base.SchemaResource{
160 {
161 Database: "db",
162 Table: "t1",
163 },
164 {
165 Database: "db",
166 Table: "t2",
167 },
168 },
169 },
170 }
171
172 for _, test := range tests {
173 parseResult, err := ParseMySQLOmni(test.statement)
174 require.NoError(t, err, "failed to parse statement: %s", test.statement)
175 require.Len(t, parseResult.Items, 1, "expected one parse result for statement: %s", test.statement)
176
177 sourceColumns := collectOmniAccessTables(parseResult.Items[0], "db", false)
178 var resources []base.SchemaResource
179 for resource := range sourceColumns {
180 resources = append(resources, base.SchemaResource{
181 Database: resource.Database,
182 Schema: resource.Schema,
183 Table: resource.Table,
184 })
185 }
186 require.ElementsMatch(t, test.expected, resources, test.statement)
187 }

Callers

nothing calls this directly

Calls 3

ParseMySQLOmniFunction · 0.85
LenMethod · 0.80
collectOmniAccessTablesFunction · 0.70

Tested by

no test coverage detected