Schema
Endb allows introspection of its information schema.
The Endb information schema does not describe the structure of
each table.
Because Endb is a document database, each document (row) is responsible
for its own schema.
The information schema is used by Endb to describe database objects
at a high level and is used for schemaless queries, such as SELECT *
.
Note that all information schema tables are hard-coded to lower-case names and must be queried as such.
Tables
-> SELECT * FROM information_schema.tables;
[{'table_catalog': None,
'table_name': 'stores',
'table_schema': 'main',
'table_type': 'BASE TABLE'},
{...
'table_name': 'products',
... },
{...
'table_name': 'sales',
... }]
Columns
-> SELECT * FROM information_schema.columns;
[{'column_name': 'addresses',
'ordinal_position': 0,
'table_catalog': None,
'table_name': 'stores',
'table_schema': 'main'},
{'column_name': 'brand',
... },
{'column_name': 'price',
... },
... ]
Views
-> SELECT * FROM information_schema.views;
[{'table_catalog': None,
'table_name': 'sold_products',
'table_schema': 'main',
'view_definition': 'SELECT * FROM products p JOIN sales s ON p.id = s.p_id'}]
Check Constraints
The check_constraints
table in Endb is used to store assertions.
-> SELECT * FROM information_schema.check_constraints;
[{'check_clause': "(NOT EXISTS (SELECT * FROM users WHERE TYPEOF(email) != 'text'))",
'constraint_catalog': None,
'constraint_name': 'string_email',
'constraint_schema': 'main'}]