MCPcopy Create free account
hub / github.com/dolthub/doltgresql / RowIter

Method RowIter

server/node/validate_constraint.go:93–152  ·  view source on GitHub ↗

RowIter implements sql.ExecSourceRel.

(ctx *sql.Context, r sql.Row)

Source from the content-addressed store, hash-verified

91
92// RowIter implements sql.ExecSourceRel.
93func (v *ValidateConstraint) RowIter(ctx *sql.Context, r sql.Row) (sql.RowIter, error) {
94 db, err := v.DbProvider.Database(ctx, ctx.GetCurrentDatabase())
95 if err != nil {
96 return nil, err
97 }
98
99 schemaName := v.schemaName
100 if schemaName == "" {
101 schemaName, err = core.GetCurrentSchema(ctx)
102 if err != nil {
103 return nil, err
104 }
105 }
106 schemaDb, ok := db.(sql.SchemaDatabase)
107 if !ok {
108 return nil, errors.Errorf("database does not support schemas")
109 }
110 dbSchema, ok, err := schemaDb.GetSchema(ctx, schemaName)
111 if err != nil {
112 return nil, err
113 }
114 if !ok {
115 return nil, errors.Errorf("schema %s does not exist", schemaName)
116 }
117 tblNode, _, err := dbSchema.GetTableInsensitive(ctx, v.tableName)
118 if err != nil {
119 return nil, err
120 }
121 if tblNode == nil {
122 return nil, sql.ErrTableNotFound.New(v.tableName)
123 }
124
125 // validate foreign key constraint
126 if fkTbl, ok := tblNode.(sql.ForeignKeyTable); ok {
127 fks, err := fkTbl.GetDeclaredForeignKeys(ctx)
128 if err != nil {
129 return nil, err
130 }
131 for _, fk := range fks {
132 if strings.EqualFold(fk.Name, v.constraintName) {
133 return v.validateForeignKey(ctx, db, fkTbl, fk)
134 }
135 }
136 }
137
138 // validate check constraint
139 if checkTbl, ok := tblNode.(sql.CheckTable); ok {
140 checks, err := checkTbl.GetChecks(ctx)
141 if err != nil {
142 return nil, err
143 }
144 for _, check := range checks {
145 if strings.EqualFold(check.Name, v.constraintName) {
146 return v.validateCheckConstraint(ctx, tblNode, check)
147 }
148 }
149 }
150

Callers

nothing calls this directly

Calls 7

validateForeignKeyMethod · 0.95
GetCurrentSchemaFunction · 0.92
ErrorfMethod · 0.65
DatabaseMethod · 0.45
GetSchemaMethod · 0.45
GetTableInsensitiveMethod · 0.45

Tested by

no test coverage detected