MCPcopy Create free account
hub / github.com/bytebase/bytebase / tidbCreateConstraint

Function tidbCreateConstraint

backend/plugin/schema/tidb/walk_through.go:1027–1070  ·  view source on GitHub ↗
(t *model.TableMetadata, constraint *tidbast.Constraint)

Source from the content-addressed store, hash-verified

1025}
1026
1027func tidbCreateConstraint(t *model.TableMetadata, constraint *tidbast.Constraint) *storepb.Advice {
1028 switch constraint.Tp {
1029 case tidbast.ConstraintPrimaryKey:
1030 keyList, err := tidbValidateAndGetKeyStringList(t, constraint.Keys, true /* primary */, false /* isSpatial */)
1031 if err != nil {
1032 return err
1033 }
1034 if err := tidbCreatePrimaryKeyHelper(t, keyList, getIndexType(constraint.Option)); err != nil {
1035 return err
1036 }
1037 case tidbast.ConstraintKey, tidbast.ConstraintIndex:
1038 keyList, err := tidbValidateAndGetKeyStringList(t, constraint.Keys, false /* primary */, false /* isSpatial */)
1039 if err != nil {
1040 return err
1041 }
1042 if err := tidbCreateIndexHelper(t, constraint.Name, keyList, false /* unique */, getIndexType(constraint.Option), constraint.Option); err != nil {
1043 return err
1044 }
1045 case tidbast.ConstraintUniq, tidbast.ConstraintUniqKey, tidbast.ConstraintUniqIndex:
1046 keyList, err := tidbValidateAndGetKeyStringList(t, constraint.Keys, false /* primary */, false /* isSpatial */)
1047 if err != nil {
1048 return err
1049 }
1050 if err := tidbCreateIndexHelper(t, constraint.Name, keyList, true /* unique */, getIndexType(constraint.Option), constraint.Option); err != nil {
1051 return err
1052 }
1053 case tidbast.ConstraintForeignKey:
1054 // we do not deal with FOREIGN KEY constraints
1055 case tidbast.ConstraintFulltext:
1056 keyList, err := tidbValidateAndGetKeyStringList(t, constraint.Keys, false /* primary */, false /* isSpatial */)
1057 if err != nil {
1058 return err
1059 }
1060 if err := tidbCreateIndexHelper(t, constraint.Name, keyList, false /* unique */, FullTextName, constraint.Option); err != nil {
1061 return err
1062 }
1063 case tidbast.ConstraintCheck:
1064 // we do not deal with CHECK constraints
1065 default:
1066 // Other constraint types
1067 }
1068
1069 return nil
1070}
1071
1072func tidbValidateAndGetKeyStringList(t *model.TableMetadata, keyList []*tidbast.IndexPartSpecification, primary bool, isSpatial bool) ([]string, *storepb.Advice) {
1073 var res []string

Callers 2

tidbAlterTableFunction · 0.85
tidbCreateTableFunction · 0.85

Calls 4

getIndexTypeFunction · 0.85
tidbCreateIndexHelperFunction · 0.85

Tested by

no test coverage detected