Skip to content

Commit 1462e2e

Browse files
committed
fix(embedded/sql): selector resolution using valuesRowReader
Signed-off-by: Jeronimo Irazabal <[email protected]>
1 parent e6d3121 commit 1462e2e

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

embedded/sql/engine_test.go

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5215,22 +5215,43 @@ func TestMultiDBCatalogQueries(t *testing.T) {
52155215
_, _, err = engine.Exec("BEGIN TRANSACTION; USE DATABASE db1; COMMIT;", nil, nil)
52165216
require.ErrorIs(t, err, ErrNonTransactionalStmt)
52175217

5218-
r, err := engine.Query("SELECT * FROM DATABASES()", nil, nil)
5219-
require.NoError(t, err)
5218+
t.Run("unconditional database query", func(t *testing.T) {
5219+
r, err := engine.Query("SELECT * FROM DATABASES() WHERE name LIKE 'db*'", nil, nil)
5220+
require.NoError(t, err)
52205221

5221-
for _, db := range dbs {
5222-
row, err := r.Read()
5222+
for _, db := range dbs {
5223+
row, err := r.Read()
5224+
require.NoError(t, err)
5225+
require.NotNil(t, row)
5226+
require.NotNil(t, row)
5227+
require.Equal(t, db, row.ValuesBySelector["(*.databases.name)"].Value())
5228+
}
5229+
5230+
_, err = r.Read()
5231+
require.ErrorIs(t, err, ErrNoMoreRows)
5232+
5233+
err = r.Close()
52235234
require.NoError(t, err)
5224-
require.NotNil(t, row)
5225-
require.NotNil(t, row)
5226-
require.Equal(t, db, row.ValuesBySelector["(*.databases.name)"].Value())
5227-
}
5235+
})
52285236

5229-
_, err = r.Read()
5230-
require.ErrorIs(t, err, ErrNoMoreRows)
5237+
t.Run("query databases using conditions with table and column aliasing", func(t *testing.T) {
5238+
r, err := engine.Query("SELECT dbs.name as dbname FROM DATABASES() as dbs WHERE name LIKE 'db*'", nil, nil)
5239+
require.NoError(t, err)
52315240

5232-
err = r.Close()
5233-
require.NoError(t, err)
5241+
for _, db := range dbs {
5242+
row, err := r.Read()
5243+
require.NoError(t, err)
5244+
require.NotNil(t, row)
5245+
require.NotNil(t, row)
5246+
require.Equal(t, db, row.ValuesBySelector["(*.dbs.dbname)"].Value())
5247+
}
5248+
5249+
_, err = r.Read()
5250+
require.ErrorIs(t, err, ErrNoMoreRows)
5251+
5252+
err = r.Close()
5253+
require.NoError(t, err)
5254+
})
52345255
})
52355256

52365257
t.Run("with a handler, statements must only involve current selected database", func(t *testing.T) {

embedded/sql/values_row_reader.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ func (vr *valuesRowReader) Tx() *SQLTx {
9191
}
9292

9393
func (vr *valuesRowReader) Database() string {
94-
return vr.tx.currentDB.name
95-
}
94+
if vr.dbAlias == "" {
95+
return vr.tx.currentDB.name
96+
}
9697

97-
func (vr *valuesRowReader) DBAlias() string {
9898
return vr.dbAlias
9999
}
100100

embedded/sql/values_row_reader_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func TestValuesRowReader(t *testing.T) {
6262
rowReader, err := newValuesRowReader(nil, cols, "db1", "table1", values)
6363
require.NoError(t, err)
6464

65-
require.Equal(t, "db1", rowReader.DBAlias())
65+
require.Equal(t, "db1", rowReader.Database())
6666
require.Nil(t, rowReader.OrderBy())
6767
require.Nil(t, rowReader.ScanSpecs())
6868

0 commit comments

Comments
 (0)