From 3d4c0e3b82ebc91497193ab94855c83da55b8575 Mon Sep 17 00:00:00 2001 From: Stephanie You Date: Fri, 17 Feb 2023 13:59:06 -0800 Subject: [PATCH 1/2] dolt_diff respects qualified database --- go/libraries/doltcore/sqle/database.go | 2 +- .../doltcore/sqle/dtables/unscoped_diff_table.go | 9 +++++---- integration-tests/bats/sql.bats | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/go/libraries/doltcore/sqle/database.go b/go/libraries/doltcore/sqle/database.go index a3491b5a26..22a3993fb1 100644 --- a/go/libraries/doltcore/sqle/database.go +++ b/go/libraries/doltcore/sqle/database.go @@ -425,7 +425,7 @@ func (db Database) getTableInsensitive(ctx *sql.Context, head *doltdb.Commit, ds } } - dt, found = dtables.NewUnscopedDiffTable(ctx, db.ddb, head), true + dt, found = dtables.NewUnscopedDiffTable(ctx, db.ddb, db.name, head), true case doltdb.TableOfTablesInConflictName: dt, found = dtables.NewTableOfTablesInConflict(ctx, db.name, db.ddb), true case doltdb.TableOfTablesWithViolationsName: diff --git a/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go b/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go index a81a719c80..bd88bcc3d4 100644 --- a/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go +++ b/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go @@ -46,6 +46,7 @@ var _ sql.FilteredTable = (*UnscopedDiffTable)(nil) // changed in each commit, across all branches. type UnscopedDiffTable struct { ddb *doltdb.DoltDB + dbName string head *doltdb.Commit partitionFilters []sql.Expression commitCheck doltdb.CommitFilter @@ -60,8 +61,8 @@ type tableChange struct { } // NewUnscopedDiffTable creates an UnscopedDiffTable -func NewUnscopedDiffTable(_ *sql.Context, ddb *doltdb.DoltDB, head *doltdb.Commit) sql.Table { - return &UnscopedDiffTable{ddb: ddb, head: head} +func NewUnscopedDiffTable(_ *sql.Context, ddb *doltdb.DoltDB, dbName string, head *doltdb.Commit) sql.Table { + return &UnscopedDiffTable{ddb: ddb, dbName: dbName, head: head} } // Filters returns the list of filters that are applied to this table. @@ -192,9 +193,9 @@ func (dt *UnscopedDiffTable) LookupPartitions(ctx *sql.Context, lookup sql.Index func (dt *UnscopedDiffTable) newWorkingSetRowItr(ctx *sql.Context) (sql.RowIter, error) { sess := dsess.DSessFromSess(ctx.Session) - roots, ok := sess.GetRoots(ctx, ctx.GetCurrentDatabase()) + roots, ok := sess.GetRoots(ctx, dt.dbName) if !ok { - return nil, fmt.Errorf("unable to lookup roots for database %s", ctx.GetCurrentDatabase()) + return nil, fmt.Errorf("unable to lookup roots for database %s", dt.dbName) } staged, unstaged, err := diff.GetStagedUnstagedTableDeltas(ctx, roots) diff --git a/integration-tests/bats/sql.bats b/integration-tests/bats/sql.bats index 9b5ba865e1..1eb0e25d7f 100755 --- a/integration-tests/bats/sql.bats +++ b/integration-tests/bats/sql.bats @@ -2581,6 +2581,22 @@ SQL [[ "$output" =~ "3" ]] || false } +@test "sql: dolt diff table respects qualified database" { + dolt sql -q "CREATE DATABASE db01; CREATE DATABASE db02;" + dolt sql -q "USE db01; CREATE TABLE t01(pk int primary key);" + run dolt sql -q "USE db01; SELECT * FROM dolt_diff;" + [ "$status" -eq 0 ] + [[ "$output" =~ "t01" ]] || false + + run dolt sql -q "USE db02; SELECT * FROM dolt_diff;" + [ "$status" -eq 0 ] + ! [[ "$output" =~ "t01" ]] || false + + run dolt sql -q "USE db02; SELECT * FROM db01.dolt_diff;" + [ "$status" -eq 0 ] + [[ "$output" =~ "t01" ]] || false +} + @test "sql: sql print on order by returns the correct result" { dolt sql -q "CREATE TABLE mytable(pk int primary key);" dolt sql -q "INSERT INTO mytable VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20)" From c7967673002b1312bff82df8b107456bc8bd6edc Mon Sep 17 00:00:00 2001 From: Stephanie You Date: Fri, 17 Feb 2023 16:31:04 -0800 Subject: [PATCH 2/2] edit param order on UnscopedDiffTable --- go/libraries/doltcore/sqle/database.go | 2 +- go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go/libraries/doltcore/sqle/database.go b/go/libraries/doltcore/sqle/database.go index 22a3993fb1..f495bd9b0c 100644 --- a/go/libraries/doltcore/sqle/database.go +++ b/go/libraries/doltcore/sqle/database.go @@ -425,7 +425,7 @@ func (db Database) getTableInsensitive(ctx *sql.Context, head *doltdb.Commit, ds } } - dt, found = dtables.NewUnscopedDiffTable(ctx, db.ddb, db.name, head), true + dt, found = dtables.NewUnscopedDiffTable(ctx, db.name, db.ddb, head), true case doltdb.TableOfTablesInConflictName: dt, found = dtables.NewTableOfTablesInConflict(ctx, db.name, db.ddb), true case doltdb.TableOfTablesWithViolationsName: diff --git a/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go b/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go index bd88bcc3d4..51fc87deeb 100644 --- a/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go +++ b/go/libraries/doltcore/sqle/dtables/unscoped_diff_table.go @@ -45,8 +45,8 @@ var _ sql.FilteredTable = (*UnscopedDiffTable)(nil) // UnscopedDiffTable is a sql.Table implementation of a system table that shows which tables have // changed in each commit, across all branches. type UnscopedDiffTable struct { - ddb *doltdb.DoltDB dbName string + ddb *doltdb.DoltDB head *doltdb.Commit partitionFilters []sql.Expression commitCheck doltdb.CommitFilter @@ -61,8 +61,8 @@ type tableChange struct { } // NewUnscopedDiffTable creates an UnscopedDiffTable -func NewUnscopedDiffTable(_ *sql.Context, ddb *doltdb.DoltDB, dbName string, head *doltdb.Commit) sql.Table { - return &UnscopedDiffTable{ddb: ddb, dbName: dbName, head: head} +func NewUnscopedDiffTable(_ *sql.Context, dbName string, ddb *doltdb.DoltDB, head *doltdb.Commit) sql.Table { + return &UnscopedDiffTable{dbName: dbName, ddb: ddb, head: head} } // Filters returns the list of filters that are applied to this table.