(t *model.TableMetadata, constraint *tidbast.Constraint)
| 1025 | } |
| 1026 | |
| 1027 | func 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 | |
| 1072 | func tidbValidateAndGetKeyStringList(t *model.TableMetadata, keyList []*tidbast.IndexPartSpecification, primary bool, isSpatial bool) ([]string, *storepb.Advice) { |
| 1073 | var res []string |
no test coverage detected