Constraints

This section describes introspection of constraints.

Introspection of the schema::Constraint:

  1. db>
  2. ...
  3. ...
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. ...
  10. ...
  11. ...
  1. with module schema
  2. select ObjectType {
  3. name,
  4. links: {
  5. name,
  6. },
  7. properties: {
  8. name,
  9. }
  10. }
  11. filter .name = 'schema::Constraint';
  1. {
  2. Object {
  3. name: 'schema::Constraint',
  4. links: {
  5. Object { name: '__type__' },
  6. Object { name: 'args' },
  7. Object { name: 'annotations' },
  8. Object { name: 'bases' },
  9. Object { name: 'ancestors' },
  10. Object { name: 'params' },
  11. Object { name: 'return_type' },
  12. Object { name: 'subject' }
  13. },
  14. properties: {
  15. Object { name: 'errmessage' },
  16. Object { name: 'expr' },
  17. Object { name: 'finalexpr' },
  18. Object { name: 'id' },
  19. Object { name: 'abstract' },
  20. Object { name: 'name' },
  21. Object { name: 'return_typemod' },
  22. Object { name: 'subjectexpr' }
  23. }
  24. }
  25. }

Consider the following schema:

  1. scalar type maxex_100 extending int64 {
  2. constraint max_ex_value(100);
  3. }

Introspection of the scalar maxex_100 with focus on the constraint:

  1. db>
  2. ...
  3. ...
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. ...
  10. ...
  11. ...
  12. ...
  13. ...
  14. ...
  15. ...
  1. with module schema
  2. select ScalarType {
  3. name,
  4. constraints: {
  5. name,
  6. expr,
  7. annotations: { name, @value },
  8. subject: { name },
  9. params: { name, @value, type: { name } },
  10. return_typemod,
  11. return_type: { name },
  12. errmessage,
  13. },
  14. }
  15. filter .name = 'default::maxex_100';
  1. {
  2. Object {
  3. name: 'default::maxex_100',
  4. constraints: {
  5. Object {
  6. name: 'std::max_ex_value',
  7. expr: '(__subject__ <= max)',
  8. annotations: {},
  9. subject: Object { name: 'default::maxex_100' },
  10. params: {
  11. Object {
  12. name: 'max',
  13. type: Object { name: 'anytype' },
  14. @value: '100'
  15. }
  16. },
  17. return_typemod: 'SingletonType',
  18. return_type: Object { name: 'std::bool' }
  19. errmessage: '{__subject__} must be less ...',
  20. }
  21. }
  22. }
  23. }

See also

Schema > Constraints

SDL > Constraints

DDL > Constraints

Standard Library > Constraints