// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // +build bigtest // An integration test for PDML using a relatively large database. package spanner import ( "context" "fmt" "testing" ) func TestIntegration_BigPDML(t *testing.T) { const nRows int = 1e4 ctx := context.Background() client, _, cleanup := prepareIntegrationTest(ctx, t, singerDBStatements) defer cleanup() columns := []string{"SingerId", "FirstName", "LastName"} // Populate the Singers table with random data. const rowsPerApply = 1000 for i := 0; i < nRows; i += rowsPerApply { var muts []*Mutation for j := 0; j < rowsPerApply; j++ { id := i + j row := []interface{}{id, fmt.Sprintf("FirstName%d", id), fmt.Sprintf("LastName%d", id)} muts = append(muts, Insert("Singers", columns, row)) } if _, err := client.Apply(ctx, muts); err != nil { t.Fatal(err) } } // Run a PDML statement. count, err := client.PartitionedUpdate(ctx, Statement{ SQL: `UPDATE Singers SET Singers.FirstName = "changed" WHERE Singers.SingerId != -1`, }) if err != nil { t.Fatal(err) } if want := int64(nRows); count != want { t.Errorf("got %d, want %d", count, want) } }