spanner/spannertest: support adding columns to tables with data
This is restricted to new columns without a NOT NULL qualification.
Updates #1181.
Change-Id: I30533a06fbec9de05a1383a60a7b26f198f1cc4c
Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/43235
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Knut Olav Løite <koloite@gmail.com>
diff --git a/spanner/spannertest/db.go b/spanner/spannertest/db.go
index fdc434e..a253a40 100644
--- a/spanner/spannertest/db.go
+++ b/spanner/spannertest/db.go
@@ -148,6 +148,9 @@
default:
return status.Newf(codes.Unimplemented, "unhandled DDL table alteration type %T", alt)
case spansql.AddColumn:
+ if alt.Def.NotNull {
+ return status.Newf(codes.InvalidArgument, "new non-key columns cannot be NOT NULL")
+ }
t.addColumn(alt.Def)
return nil
}
@@ -450,8 +453,13 @@
defer t.mu.Unlock()
if len(t.rows) > 0 {
- // TODO: fill with placeholder data instead
- return status.Newf(codes.Unimplemented, "can't add columns to non-empty tables")
+ if cd.NotNull {
+ // TODO: what happens in this case?
+ return status.Newf(codes.Unimplemented, "can't add NOT NULL columns to non-empty tables yet")
+ }
+ for i := range t.rows {
+ t.rows[i] = append(t.rows[i], nil)
+ }
}
t.cols = append(t.cols, colInfo{