// writeMutation writes the mutation to the table descriptor. If the // State or the Direction is undefined, these values are populated via // picking random values before the mutation is written. func (mt mutationTest) writeMutation(m csql.DescriptorMutation) { if m.Direction == csql.DescriptorMutation_NONE { // randomly pick ADD/DROP mutation. r := rand.Intn(2) if r == 0 { m.Direction = csql.DescriptorMutation_ADD } else { m.Direction = csql.DescriptorMutation_DROP } } if m.State == csql.DescriptorMutation_UNKNOWN { // randomly pick DELETE_ONLY/WRITE_ONLY state. r := rand.Intn(2) if r == 0 { m.State = csql.DescriptorMutation_DELETE_ONLY } else { m.State = csql.DescriptorMutation_WRITE_ONLY } } tableDesc := mt.desc.GetTable() tableDesc.Mutations = append(tableDesc.Mutations, m) if err := tableDesc.Validate(); err != nil { mt.Fatal(err) } if err := mt.kvDB.Put(mt.descKey, mt.desc); err != nil { mt.Fatal(err) } }
// writeColumnMutation adds column as a mutation and writes the // descriptor to the DB. func (mt mutationTest) writeColumnMutation(t *testing.T, column string, state csql.DescriptorMutation_State) { tableDesc := mt.desc.GetTable() i, err := tableDesc.FindColumnByName(column) if err != nil { t.Fatal(err) } col := &tableDesc.Columns[i] m := csql.DescriptorMutation{Descriptor_: &csql.DescriptorMutation_Column{Column: col}, State: state} // randomly pick add/drop mutation. r := rand.Intn(2) if r == 0 { m.Direction = csql.DescriptorMutation_ADD } else { m.Direction = csql.DescriptorMutation_DROP } tableDesc.Mutations = append(tableDesc.Mutations, m) tableDesc.Columns = append(tableDesc.Columns[:i], tableDesc.Columns[i+1:]...) if err := tableDesc.Validate(); err != nil { t.Fatal(err) } if err := mt.kvDB.Put(mt.descKey, mt.desc); err != nil { t.Fatal(err) } }