MCPcopy Create free account
hub / github.com/dgraph-io/dgraph / validateNQuads

Function validateNQuads

edgraph/server.go:2311–2355  ·  view source on GitHub ↗
(set, del []*api.NQuad, guardReserved reservedPredicateGuard)

Source from the content-addressed store, hash-verified

2309}
2310
2311func validateNQuads(set, del []*api.NQuad, guardReserved reservedPredicateGuard) error {
2312 for _, nq := range set {
2313 if err := validatePredName(nq.Predicate); err != nil {
2314 return err
2315 }
2316 var ostar bool
2317 if o, ok := nq.ObjectValue.GetVal().(*api.Value_DefaultVal); ok {
2318 ostar = o.DefaultVal == x.Star
2319 }
2320 if nq.Subject == x.Star || nq.Predicate == x.Star || ostar {
2321 return errors.Errorf("Cannot use star in set n-quad: %+v", nq)
2322 }
2323 if err := validateKeys(nq); err != nil {
2324 return errors.Wrapf(err, "key error: %+v", nq)
2325 }
2326 if err := guardReserved(nq); err != nil {
2327 return err
2328 }
2329 }
2330 for _, nq := range del {
2331 if err := validatePredName(nq.Predicate); err != nil {
2332 return err
2333 }
2334 var ostar bool
2335 if o, ok := nq.ObjectValue.GetVal().(*api.Value_DefaultVal); ok {
2336 ostar = o.DefaultVal == x.Star
2337 }
2338 if nq.Subject == x.Star || (nq.Predicate == x.Star && !ostar) {
2339 return errors.Errorf("Only valid wildcard delete patterns are 'S * *' and 'S P *': %v", nq)
2340 }
2341 // guardReserved matches a named predicate, so a 'S P *' delete of a
2342 // value-locked predicate is caught here. A 'S * *' delete (predicate is
2343 // the wildcard) cannot be matched per-predicate: the subject's predicates
2344 // aren't known at validation, and the wildcard is expanded post-Raft in
2345 // worker where the request's TrustMarker is gone. Bulk subject deletes
2346 // that remove a value-locked predicate are outside the value lock's scope
2347 // and are gated by ACL predicate-level permissions.
2348 if err := guardReserved(nq); err != nil {
2349 return err
2350 }
2351 // NOTE: we dont validateKeys() with delete to let users fix existing mistakes
2352 // with bad predicate forms. ex: foo@bar ~something
2353 }
2354 return nil
2355}
2356
2357func validateKey(key string) error {
2358 switch {

Callers 1

ParseMutationObjectFunction · 0.85

Calls 4

validatePredNameFunction · 0.85
validateKeysFunction · 0.85
GetValMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…