mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-09 18:59:12 -06:00
Fix for reading old dolt_schemas
This commit is contained in:
committed by
Daylon Wilkins
parent
214c29a1f7
commit
f9bfdb1cb3
@@ -163,7 +163,13 @@ SQL
|
||||
[[ "$output" =~ "type,name,fragment" ]] || false
|
||||
[[ "$output" =~ "view,view1,SELECT 2+2 FROM dual" ]] || false
|
||||
[[ "${#lines[@]}" = "2" ]] || false
|
||||
dolt sql -q "CREATE VIEW view2 AS SELECT 2+2 FROM dual;"
|
||||
run dolt sql -q "SELECT * FROM view1" -r=csv
|
||||
[ "$status" -eq "0" ]
|
||||
[[ "$output" =~ "2 + 2" ]] || false
|
||||
[[ "$output" =~ "4" ]] || false
|
||||
[[ "${#lines[@]}" = "2" ]] || false
|
||||
# creating a new view/trigger will recreate the dolt_schemas table
|
||||
dolt sql -q "CREATE VIEW view2 AS SELECT 3+3 FROM dual;"
|
||||
run dolt diff
|
||||
[ "$status" -eq "0" ]
|
||||
[[ "$output" =~ "deleted table" ]] || false
|
||||
@@ -172,6 +178,16 @@ SQL
|
||||
[ "$status" -eq "0" ]
|
||||
[[ "$output" =~ "id,type,name,fragment" ]] || false
|
||||
[[ "$output" =~ "1,view,view1,SELECT 2+2 FROM dual" ]] || false
|
||||
[[ "$output" =~ "2,view,view2,SELECT 2+2 FROM dual" ]] || false
|
||||
[[ "$output" =~ "2,view,view2,SELECT 3+3 FROM dual" ]] || false
|
||||
[[ "${#lines[@]}" = "3" ]] || false
|
||||
run dolt sql -q "SELECT * FROM view1" -r=csv
|
||||
[ "$status" -eq "0" ]
|
||||
[[ "$output" =~ "2 + 2" ]] || false
|
||||
[[ "$output" =~ "4" ]] || false
|
||||
[[ "${#lines[@]}" = "2" ]] || false
|
||||
run dolt sql -q "SELECT * FROM view2" -r=csv
|
||||
[ "$status" -eq "0" ]
|
||||
[[ "$output" =~ "3 + 3" ]] || false
|
||||
[[ "$output" =~ "6" ]] || false
|
||||
[[ "${#lines[@]}" = "2" ]] || false
|
||||
}
|
||||
|
||||
@@ -891,21 +891,40 @@ func RegisterSchemaFragments(ctx *sql.Context, db Database, root *doltdb.RootVal
|
||||
var parseErrors []error
|
||||
|
||||
r, err := iter.Next()
|
||||
for err == nil {
|
||||
if r[1] == "view" {
|
||||
name := r[2].(string)
|
||||
definition := r[3].(string)
|
||||
cv, err := parse.Parse(ctx, fmt.Sprintf("create view %s as %s", sqlfmt.QuoteIdentifier(name), definition))
|
||||
if err != nil {
|
||||
parseErrors = append(parseErrors, err)
|
||||
} else {
|
||||
err = ctx.Register(db.Name(), cv.(*plan.CreateView).Definition.AsView())
|
||||
if stbl.Schema().Contains(doltdb.SchemasTablesIdCol, doltdb.SchemasTableName) { // new dolt_schemas added id column
|
||||
for err == nil {
|
||||
if r[1] == "view" {
|
||||
name := r[2].(string)
|
||||
definition := r[3].(string)
|
||||
cv, err := parse.Parse(ctx, fmt.Sprintf("create view %s as %s", sqlfmt.QuoteIdentifier(name), definition))
|
||||
if err != nil {
|
||||
return err
|
||||
parseErrors = append(parseErrors, err)
|
||||
} else {
|
||||
err = ctx.Register(db.Name(), cv.(*plan.CreateView).Definition.AsView())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
r, err = iter.Next()
|
||||
}
|
||||
} else {
|
||||
for err == nil {
|
||||
if r[0] == "view" {
|
||||
name := r[1].(string)
|
||||
definition := r[2].(string)
|
||||
cv, err := parse.Parse(ctx, fmt.Sprintf("create view %s as %s", sqlfmt.QuoteIdentifier(name), definition))
|
||||
if err != nil {
|
||||
parseErrors = append(parseErrors, err)
|
||||
} else {
|
||||
err = ctx.Register(db.Name(), cv.(*plan.CreateView).Definition.AsView())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
r, err = iter.Next()
|
||||
}
|
||||
r, err = iter.Next()
|
||||
}
|
||||
if err != io.EOF {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user