spanner: release v1.2.1

Change-Id: I1b805e3608318bfcc291a59924668ef7b62f14b8
Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/52034
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Knut Olav Løite <koloite@gmail.com>
diff --git a/internal/version/version.go b/internal/version/version.go
index 6161440..abf6290 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -26,7 +26,7 @@
 
 // Repo is the current version of the client libraries in this
 // repo. It should be a date in YYYYMMDD format.
-const Repo = "20200212"
+const Repo = "20200217"
 
 // Go returns the Go runtime version. The returned string
 // has no whitespace.
diff --git a/spanner/CHANGES.md b/spanner/CHANGES.md
index e85c310..f84932c 100644
--- a/spanner/CHANGES.md
+++ b/spanner/CHANGES.md
@@ -1,5 +1,16 @@
 # Changes
 
+## v1.2.1
+
+- Fix session leakage for ApplyAtLeastOnce. Previously session handles where
+  leaked whenever Commit() returned a non-abort, non-session-not-found error,
+  due to a missing recycle() call.
+- Fix error for WriteStruct with pointers. This fixes a specific check for
+  encoding and decoding to pointer types.
+- Fix a GRPCStatus issue that returns a Status that has Unknown code if the
+  base error is nil. Now, it always returns a Status based on Code field of
+  current error.
+
 ## v1.2.0
 
 - Support tracking stacktrace of sessionPool.take() that allows the user