func (sc *SchemaChanger) maybeWriteResumeSpan( txn *client.Txn, version sqlbase.DescriptorVersion, resume roachpb.Span, mutationIdx int, lastCheckpoint *time.Time, ) error { checkpointInterval := checkpointInterval if sc.testingKnobs.WriteCheckpointInterval > 0 { checkpointInterval = sc.testingKnobs.WriteCheckpointInterval } if timeutil.Since(*lastCheckpoint) < checkpointInterval { return nil } tableDesc, err := sqlbase.GetTableDescFromID(txn, sc.tableID) if err != nil { return err } if tableDesc.Version != version { return errVersionMismatch } tableDesc.Mutations[mutationIdx].ResumeSpan = resume txn.SetSystemConfigTrigger() if err := txn.Put(sqlbase.MakeDescMetadataKey(tableDesc.GetID()), sqlbase.WrapDescriptor(tableDesc)); err != nil { return err } *lastCheckpoint = timeutil.Now() return nil }
// writeCmd sums values from the env (and possibly numeric constants) // and writes the value to the db. "c.endKey" here needs to be parsed // in the context of this command, which is a "+"-separated list of // keys from the env or numeric constants to sum. func writeCmd(c *cmd, txn *client.Txn, t *testing.T) error { sum := int64(0) for _, sp := range strings.Split(c.endKey, "+") { if constant, err := strconv.Atoi(sp); err != nil { sum += c.env[sp] } else { sum += int64(constant) } } err := txn.Put(c.getKey(), sum) c.debug = fmt.Sprintf("[%d]", sum) return err }
// incCmd adds one to the value of c.key in the env (as determined by // a previous read or write, or else assumed to be zero) and writes it // to the db. func incCmd(c *cmd, txn *client.Txn, t *testing.T) error { val, ok := c.env[c.key] if !ok { panic(fmt.Sprintf("can't increment key %q; not yet read", c.key)) } r := val + 1 if err := txn.Put(c.getKey(), r); err != nil { return err } c.env[c.key] = r c.debug = fmt.Sprintf("[%d]", r) return nil }