diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go index 1f6b3ff550..5a2d4ed1d5 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go @@ -701,6 +701,23 @@ var DoltScripts = []queries.ScriptTest{ }, }, }, + { + Name: "dolt_schemas schema", + SetUpScript: []string{ + "CREATE TABLE viewtest(v1 int, v2 int)", + "CREATE VIEW view1 AS SELECT v1 FROM viewtest", + "CREATE VIEW view2 AS SELECT v2 FROM viewtest", + }, + Assertions: []queries.ScriptTestAssertion{ + { + Query: "SELECT type, name, fragment, id FROM dolt_schemas ORDER BY 1, 2", + Expected: []sql.Row{ + {"view", "view1", "SELECT v1 FROM viewtest", int64(1)}, + {"view", "view2", "SELECT v2 FROM viewtest", int64(2)}, + }, + }, + }, + }, } func makeLargeInsert(sz int) string { diff --git a/go/libraries/doltcore/sqle/schema_table_test.go b/go/libraries/doltcore/sqle/schema_table_test.go index bf3247887a..f4c4c83a30 100644 --- a/go/libraries/doltcore/sqle/schema_table_test.go +++ b/go/libraries/doltcore/sqle/schema_table_test.go @@ -32,6 +32,9 @@ import ( ) func TestSchemaTableRecreationOlder(t *testing.T) { + if types.Format_Default != types.Format_LD_1 { + t.Skip() + } ctx := NewTestSQLCtx(context.Background()) dEnv := dtestutils.CreateTestEnv() tmpDir, err := dEnv.TempTableFilesDir() @@ -51,59 +54,34 @@ func TestSchemaTableRecreationOlder(t *testing.T) { {Name: doltdb.SchemasTablesFragmentCol, Type: sql.Text, Source: doltdb.SchemasTableName, PrimaryKey: false}, }), sql.Collation_Default) require.NoError(t, err) - sqlTbl, found, err := db.GetTableInsensitive(ctx, doltdb.SchemasTableName) + root, err := db.GetRoot(ctx) require.NoError(t, err) - require.True(t, found) - inserter := sqlTbl.(*WritableDoltTable).Inserter(ctx) - err = inserter.Insert(ctx, sql.Row{"view", "view1", "SELECT v1 FROM test;"}) - require.NoError(t, err) - err = inserter.Insert(ctx, sql.Row{"view", "view2", "SELECT v2 FROM test;"}) - require.NoError(t, err) - err = inserter.Close(ctx) + err = dEnv.UpdateWorkingRoot(ctx, root) require.NoError(t, err) - table, err := sqlTbl.(*WritableDoltTable).DoltTable.DoltTable(ctx) - require.NoError(t, err) - - rowData, err := table.GetNomsRowData(ctx) - require.NoError(t, err) - expectedVals := []sql.Row{ + expected := []sql.Row{ {"view", "view1", "SELECT v1 FROM test;"}, {"view", "view2", "SELECT v2 FROM test;"}, } - index := 0 - _ = rowData.IterAll(ctx, func(keyTpl, valTpl types.Value) error { - dRow, err := row.FromNoms(sqlTbl.(*WritableDoltTable).sch, keyTpl.(types.Tuple), valTpl.(types.Tuple)) - require.NoError(t, err) - sqlRow, err := sqlutil.DoltRowToSqlRow(dRow, sqlTbl.(*WritableDoltTable).sch) - require.NoError(t, err) - assert.Equal(t, expectedVals[index], sqlRow) - index++ - return nil - }) + actual, err := ExecuteSelect(t, dEnv, root, "SELECT * FROM "+doltdb.SchemasTableName) + require.NoError(t, err) + assert.Equal(t, expected, actual) - tbl, err := GetOrCreateDoltSchemasTable(ctx, db) // removes the old table and recreates it with the new schema + // removes the old table and recreates it with the new schema + tbl, err := GetOrCreateDoltSchemasTable(ctx, db) require.NoError(t, err) - table, err = tbl.DoltTable.DoltTable(ctx) + root, err = db.GetRoot(ctx) + require.NoError(t, err) + err = dEnv.UpdateWorkingRoot(ctx, root) require.NoError(t, err) - rowData, err = table.GetNomsRowData(ctx) - require.NoError(t, err) - expectedVals = []sql.Row{ + expected = []sql.Row{ {"view", "view1", "SELECT v1 FROM test;", int64(1), nil}, {"view", "view2", "SELECT v2 FROM test;", int64(2), nil}, } - index = 0 - _ = rowData.IterAll(ctx, func(keyTpl, valTpl types.Value) error { - dRow, err := row.FromNoms(tbl.sch, keyTpl.(types.Tuple), valTpl.(types.Tuple)) - require.NoError(t, err) - sqlRow, err := sqlutil.DoltRowToSqlRow(dRow, tbl.sch) - require.NoError(t, err) - assert.Equal(t, expectedVals[index], sqlRow) - index++ - return nil - }) + actual, err = ExecuteSelect(t, dEnv, root, "SELECT * FROM "+doltdb.SchemasTableName) + require.NoError(t, err) indexes := tbl.sch.Indexes().AllIndexes() require.Len(t, indexes, 1) @@ -112,6 +90,9 @@ func TestSchemaTableRecreationOlder(t *testing.T) { } func TestSchemaTableRecreation(t *testing.T) { + if types.Format_Default != types.Format_LD_1 { + t.Skip() + } ctx := NewTestSQLCtx(context.Background()) dEnv := dtestutils.CreateTestEnv() tmpDir, err := dEnv.TempTableFilesDir()