Check report format¶
lokadb check -json is the machine format of the compatibility report: for an application's CI, for interfaces and for tools. The text report is for people; this format is the contract.
- It carries a
schema_version, and finding codes are never renamed. Codes that are no longer produced are listed as retired (finding codes). - Each finding has a stable
key(code and object), a parsedsubject, thepatterns(query patterns with their fingerprints, calls, tables, roles and source),transactionsand ameasure. - The report echoes its input (spec, policy with
allowfingerprints, LokaDB version) so two reports can be compared, and it contains no values from data rows, only names, numbers and SQL without literals. - In CI,
check -ci -baseline accepted.jsonexits 0 when nothing is new and 6 when something is (check an application).
The format, with a JSON Schema of version 1, the list of finding codes and sample reports, is also published in lokadb/check.
Fields¶
Every field the report can contain, with its type, generated from the program's own test data. Paths with [] repeat for every element.
| Field | Type |
|---|---|
ci.accepted |
number |
ci.accepted_without_reason |
number |
ci.baseline |
string |
ci.new[].code |
string |
ci.new[].hint |
string |
ci.new[].key |
string |
ci.new[].object |
string |
ci.new[].pattern.calls |
number |
ci.new[].pattern.fingerprint |
string |
ci.new[].pattern.gaps[].cloud |
bool |
ci.new[].pattern.gaps[].column |
string |
ci.new[].pattern.gaps[].form |
string |
ci.new[].pattern.gaps[].kind |
string |
ci.new[].pattern.gaps[].table |
string |
ci.new[].pattern.note |
string |
ci.new[].pattern.roles |
[]string |
ci.new[].pattern.sources |
[]string |
ci.new[].pattern.sql |
string |
ci.new[].pattern.tables |
[]string |
ci.new[].pattern.write |
bool |
ci.new[].severity |
string |
ci.stale[].code |
string |
ci.stale[].fingerprint |
string |
ci.stale[].key |
string |
ci.stale[].object |
string |
ci.stale[].reason |
string |
ci.stale[].sql |
string |
database |
string |
discovery.key |
string |
discovery.key_kind |
string |
discovery.org_table |
string |
discovery.spec.routing.cloud_tables[].table |
string |
discovery.spec.routing.cloud_tables[].tenant_column |
string |
discovery.spec.routing.keys[].column |
string |
discovery.spec.routing.keys[].table |
string |
discovery.spec.routing.relations[].confirmed |
bool |
discovery.spec.routing.relations[].from |
string |
discovery.spec.routing.relations[].to |
string |
discovery.spec.tables[].name |
string |
discovery.spec.tables[].parent_column |
string |
discovery.spec.tables[].parent_table |
string |
discovery.spec.tables[].tenant_column |
string |
discovery.tables[].basis |
string |
discovery.tables[].code |
string |
discovery.tables[].column |
string |
discovery.tables[].options[].column |
string |
discovery.tables[].options[].target |
string |
discovery.tables[].parent |
string |
discovery.tables[].path |
[]string |
discovery.tables[].reason |
string |
discovery.tables[].role |
string |
discovery.tables[].table |
string |
fanout.allow |
[]string |
fanout.mode |
string |
fanout.source |
string |
fanout_policy |
string |
findings[].code |
string |
findings[].examples |
[]string |
findings[].key |
string |
findings[].measure.method |
string |
findings[].measure.of |
number |
findings[].measure.rows |
number |
findings[].message |
string |
findings[].object |
string |
findings[].patterns[].calls |
number |
findings[].patterns[].fingerprint |
string |
findings[].patterns[].gaps[].cloud |
bool |
findings[].patterns[].gaps[].column |
string |
findings[].patterns[].gaps[].form |
string |
findings[].patterns[].gaps[].kind |
string |
findings[].patterns[].gaps[].table |
string |
findings[].patterns[].note |
string |
findings[].patterns[].roles |
[]string |
findings[].patterns[].sources |
[]string |
findings[].patterns[].sql |
string |
findings[].patterns[].tables |
[]string |
findings[].patterns[].write |
bool |
findings[].severity |
string |
findings[].subject.cloud_tables |
[]string |
findings[].subject.column |
string |
findings[].subject.columns |
[]string |
findings[].subject.constraint |
string |
findings[].subject.database |
string |
findings[].subject.extension |
string |
findings[].subject.fingerprint |
string |
findings[].subject.kind |
string |
findings[].subject.lokadb_tables |
[]string |
findings[].subject.partition_of |
string |
findings[].subject.partitions |
[]string |
findings[].subject.path |
string |
findings[].subject.reason |
string |
findings[].subject.ref_columns |
[]string |
findings[].subject.ref_schema |
string |
findings[].subject.ref_table |
string |
findings[].subject.role |
string |
findings[].subject.schema |
string |
findings[].subject.setting |
string |
findings[].subject.side |
string |
findings[].subject.table |
string |
findings[].suggestion.calls |
number |
findings[].suggestion.data_check.parents_found |
number |
findings[].suggestion.data_check.parents_of_another_organization |
number |
findings[].suggestion.data_check.rows |
number |
findings[].suggestion.key_check.duplicate_values |
number |
findings[].suggestion.key_check.nulls |
number |
findings[].suggestion.key_check.rows |
number |
findings[].suggestion.kind |
string |
findings[].suggestion.patterns |
[]string |
findings[].suggestion.routing.cloud_tables[].table |
string |
findings[].suggestion.routing.cloud_tables[].tenant_column |
string |
findings[].suggestion.routing.keys[].column |
string |
findings[].suggestion.routing.keys[].table |
string |
findings[].suggestion.routing.relations[].confirmed |
bool |
findings[].suggestion.routing.relations[].from |
string |
findings[].suggestion.routing.relations[].to |
string |
findings[].transactions[].cloud_tables |
[]string |
findings[].transactions[].count |
number |
findings[].transactions[].lokadb_tables |
[]string |
findings[].transactions[].shapes |
number |
findings[].transactions[].statements[].fingerprint |
string |
findings[].transactions[].statements[].sql |
string |
findings[].transactions[].statements[].tables |
[]string |
findings[].transactions[].statements[].write |
bool |
latency.exchanges.direct_statement |
number |
latency.exchanges.fdw_insert |
number |
latency.exchanges.fdw_select |
number |
latency.exchanges.fdw_transaction |
number |
latency.exchanges.fdw_update_delete_parent |
number |
latency.exchanges.fdw_update_partition |
number |
latency.exchanges.target_commit |
number |
latency.model |
string |
latency.rtt_ms |
number |
latency.total_direct_ms |
number |
latency.total_fdw_ms |
number |
latency.total_target_ms |
number |
latency.transactions[].all_organizations |
bool |
latency.transactions[].count |
number |
latency.transactions[].exchanges_direct |
number |
latency.transactions[].exchanges_fdw |
number |
latency.transactions[].exchanges_target |
number |
latency.transactions[].ms_direct |
number |
latency.transactions[].ms_fdw |
number |
latency.transactions[].ms_target |
number |
latency.transactions[].single_statement |
bool |
latency.transactions[].statements[].all_organizations |
bool |
latency.transactions[].statements[].exchanges_direct |
number |
latency.transactions[].statements[].exchanges_fdw |
number |
latency.transactions[].statements[].exchanges_target |
number |
latency.transactions[].statements[].fingerprint |
string |
latency.transactions[].statements[].kind |
string |
latency.transactions[].statements[].repeats |
number |
latency.transactions[].statements[].repeats_counted |
bool |
latency.transactions[].statements[].sql |
string |
lokadb_version |
string |
profile.calls |
number |
profile.calls_direct |
number |
profile.current_profile |
string |
profile.org |
number |
profile.profile |
string |
profile.query_patterns |
number |
profile.query_patterns_direct |
number |
profile.query_patterns_direct_by_values |
number |
profile.reasons[].calls |
number |
profile.reasons[].examples |
[]string |
profile.reasons[].fingerprints |
[]string |
profile.reasons[].query_patterns |
number |
profile.reasons[].reason |
string |
profile.transactions.shapes |
number |
profile.transactions.shapes_direct |
number |
profile.transactions.shapes_fdw_after_cloud |
number |
profile.transactions.shapes_fdw_after_direct |
number |
profile.transactions.shapes_naming_organization |
number |
profile.transactions.shapes_two_connections |
number |
profile.transactions.transactions |
number |
profile.transactions.transactions_direct |
number |
schema_version |
number |
spec.routing.cloud_tables[].table |
string |
spec.routing.cloud_tables[].tenant_column |
string |
spec.routing.keys[].column |
string |
spec.routing.keys[].table |
string |
spec.routing.relations[].confirmed |
bool |
spec.routing.relations[].from |
string |
spec.routing.relations[].to |
string |
spec.tables[].name |
string |
spec.tables[].parent_column |
string |
spec.tables[].parent_table |
string |
spec.tables[].tenant_column |
string |
suggested_routing.cloud_tables[].table |
string |
suggested_routing.cloud_tables[].tenant_column |
string |
suggested_routing.keys[].column |
string |
suggested_routing.keys[].table |
string |
suggested_routing.relations[].confirmed |
bool |
suggested_routing.relations[].from |
string |
suggested_routing.relations[].to |
string |
suggested_spec.routing.cloud_tables[].table |
string |
suggested_spec.routing.cloud_tables[].tenant_column |
string |
suggested_spec.routing.keys[].column |
string |
suggested_spec.routing.keys[].table |
string |
suggested_spec.routing.relations[].confirmed |
bool |
suggested_spec.routing.relations[].from |
string |
suggested_spec.routing.relations[].to |
string |
suggested_spec.tables[].name |
string |
suggested_spec.tables[].parent_column |
string |
suggested_spec.tables[].parent_table |
string |
suggested_spec.tables[].tenant_column |
string |
summary.query_patterns |
number |
summary.query_patterns_refused_by_proxy |
number |
summary.query_patterns_without_organization |
number |
summary.tables |
number |
summary.tables_ready |
number |
summary.tables_unsupported |
number |
summary.transaction_patterns |
number |
summary.transaction_patterns_writing_cloud_and_lokadb |
number |
summary.transactions_checked |
bool |
summary.unique_constraints_becoming_per_organization |
number |
tables[].name |
string |
tables[].ready |
bool |
tables[].rows_estimate |
number |
tables[].schema |
string |
tables[].state |
string |
tables[].tenant |
string |
verdict |
string |
workload_sources |
[]string |