github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/ccl/changefeedccl/schemafeed/schematestutils/schema_test_utils.go (about)

     1  // Copyright 2018 The Cockroach Authors.
     2  //
     3  // Licensed as a CockroachDB Enterprise file under the Cockroach Community
     4  // License (the "License"); you may not use this file except in compliance with
     5  // the License. You may obtain a copy of the License at
     6  //
     7  //     https://github.com/cockroachdb/cockroach/blob/master/licenses/CCL.txt
     8  
     9  // Package schematestutils is a utility package for constructing schema objects
    10  // in the context of cdc.
    11  package schematestutils
    12  
    13  import (
    14  	"strconv"
    15  
    16  	"github.com/cockroachdb/cockroach/pkg/sql/sqlbase"
    17  	"github.com/cockroachdb/cockroach/pkg/sql/types"
    18  	"github.com/cockroachdb/cockroach/pkg/util/hlc"
    19  	"github.com/gogo/protobuf/proto"
    20  )
    21  
    22  // MakeTableDesc makes a generic table descriptor with the provided properties.
    23  func MakeTableDesc(
    24  	tableID sqlbase.ID, version sqlbase.DescriptorVersion, modTime hlc.Timestamp, cols int,
    25  ) *sqlbase.TableDescriptor {
    26  	td := &sqlbase.TableDescriptor{
    27  		Name:             "foo",
    28  		ID:               tableID,
    29  		Version:          version,
    30  		ModificationTime: modTime,
    31  		NextColumnID:     1,
    32  	}
    33  	for i := 0; i < cols; i++ {
    34  		td.Columns = append(td.Columns, *MakeColumnDesc(td.NextColumnID))
    35  		td.NextColumnID++
    36  	}
    37  	return td
    38  }
    39  
    40  // MakeColumnDesc makes a generic column descriptor with the provided id.
    41  func MakeColumnDesc(id sqlbase.ColumnID) *sqlbase.ColumnDescriptor {
    42  	return &sqlbase.ColumnDescriptor{
    43  		Name:        "c" + strconv.Itoa(int(id)),
    44  		ID:          id,
    45  		Type:        types.Bool,
    46  		DefaultExpr: proto.String("true"),
    47  	}
    48  }
    49  
    50  // AddColumnDropBackfillMutation adds a mutation to desc to drop a column.
    51  func AddColumnDropBackfillMutation(desc *sqlbase.TableDescriptor) *sqlbase.TableDescriptor {
    52  	desc.Mutations = append(desc.Mutations, sqlbase.DescriptorMutation{
    53  		State:     sqlbase.DescriptorMutation_DELETE_AND_WRITE_ONLY,
    54  		Direction: sqlbase.DescriptorMutation_DROP,
    55  	})
    56  	return desc
    57  }
    58  
    59  // AddNewColumnBackfillMutation adds a mutation to desc to add a column.
    60  func AddNewColumnBackfillMutation(desc *sqlbase.TableDescriptor) *sqlbase.TableDescriptor {
    61  	desc.Mutations = append(desc.Mutations, sqlbase.DescriptorMutation{
    62  		Descriptor_: &sqlbase.DescriptorMutation_Column{Column: MakeColumnDesc(desc.NextColumnID)},
    63  		State:       sqlbase.DescriptorMutation_DELETE_AND_WRITE_ONLY,
    64  		Direction:   sqlbase.DescriptorMutation_ADD,
    65  		MutationID:  0,
    66  		Rollback:    false,
    67  	})
    68  	return desc
    69  }