Loading config/SCHEMA_VERSION +1 −1 Original line number Diff line number Diff line 19 20 config/graph.sql +3 −1 Original line number Diff line number Diff line -- SCHEMA_VERSION=19 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- SCHEMA_VERSION=20 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- Regenerate with: mise schema:generate:ddl CREATE TABLE IF NOT EXISTS checkpoint ( Loading Loading @@ -869,6 +869,8 @@ CREATE TABLE IF NOT EXISTS gl_code_edge ( INDEX idx_relationship relationship_kind TYPE set(50) GRANULARITY 2, PROJECTION by_source (SELECT * ORDER BY (source_id, relationship_kind, target_id, traversal_path, source_kind, target_kind)), PROJECTION by_target (SELECT * ORDER BY (target_id, relationship_kind, source_id, traversal_path, source_kind, target_kind)), PROJECTION by_rel_source_kind (SELECT * ORDER BY (relationship_kind, source_kind, source_id, target_id, traversal_path, target_kind)), PROJECTION by_rel_target_kind (SELECT * ORDER BY (relationship_kind, target_kind, target_id, source_id, traversal_path, source_kind)), PROJECTION agg_counts_by_source ( SELECT relationship_kind, target_kind, source_id, traversal_path, count() GROUP BY relationship_kind, target_kind, source_id, traversal_path Loading config/graph_local.sql +1 −1 Original line number Diff line number Diff line -- SCHEMA_VERSION=19 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- SCHEMA_VERSION=20 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- Regenerate with: mise schema:generate:ddl:local CREATE TABLE IF NOT EXISTS gl_definition ( Loading config/ontology/schema.yaml +6 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,12 @@ settings: - type: reorder name: by_target order_by: [target_id, relationship_kind, source_id, traversal_path, source_kind, target_kind] - type: reorder name: by_rel_source_kind order_by: [relationship_kind, source_kind, source_id, target_id, traversal_path, target_kind] - type: reorder name: by_rel_target_kind order_by: [relationship_kind, target_kind, target_id, source_id, traversal_path, source_kind] # `count(target) GROUP BY source` — e.g. definitions per file via # DEFINES. Without this, the wildcard scan over vendored JS bundles # (`echarts.js` ≈ 13K defs, `pdf.worker.js` ≈ 12K defs) materializes Loading crates/query-engine/compiler/src/passes/codegen/ddl/mod.rs +43 −0 Original line number Diff line number Diff line Loading @@ -510,6 +510,49 @@ mod tests { } } #[test] fn code_edge_has_relationship_kind_reorder_projections() { let tables = generate_graph_tables(&ontology()); let code_edge = tables .iter() .find(|table| table.name == "gl_code_edge") .expect("gl_code_edge table should be generated"); let has_projection = |name: &str, expected: &[&str]| { code_edge.projections.iter().any(|projection| { matches!( projection, ProjectionDef::Reorder { name: projection_name, order_by } if projection_name == name && order_by.iter().map(String::as_str).eq(expected.iter().copied()) ) }) }; assert!(has_projection( "by_rel_source_kind", &[ "relationship_kind", "source_kind", "source_id", "target_id", "traversal_path", "target_kind", ], )); assert!(has_projection( "by_rel_target_kind", &[ "relationship_kind", "target_kind", "target_id", "source_id", "traversal_path", "source_kind", ], )); } #[test] fn every_table_has_system_columns() { for table in &generate_graph_tables(&ontology()) { Loading Loading
config/graph.sql +3 −1 Original line number Diff line number Diff line -- SCHEMA_VERSION=19 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- SCHEMA_VERSION=20 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- Regenerate with: mise schema:generate:ddl CREATE TABLE IF NOT EXISTS checkpoint ( Loading Loading @@ -869,6 +869,8 @@ CREATE TABLE IF NOT EXISTS gl_code_edge ( INDEX idx_relationship relationship_kind TYPE set(50) GRANULARITY 2, PROJECTION by_source (SELECT * ORDER BY (source_id, relationship_kind, target_id, traversal_path, source_kind, target_kind)), PROJECTION by_target (SELECT * ORDER BY (target_id, relationship_kind, source_id, traversal_path, source_kind, target_kind)), PROJECTION by_rel_source_kind (SELECT * ORDER BY (relationship_kind, source_kind, source_id, target_id, traversal_path, target_kind)), PROJECTION by_rel_target_kind (SELECT * ORDER BY (relationship_kind, target_kind, target_id, source_id, traversal_path, source_kind)), PROJECTION agg_counts_by_source ( SELECT relationship_kind, target_kind, source_id, traversal_path, count() GROUP BY relationship_kind, target_kind, source_id, traversal_path Loading
config/graph_local.sql +1 −1 Original line number Diff line number Diff line -- SCHEMA_VERSION=19 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- SCHEMA_VERSION=20 [AUTOGENERATED — DO NOT EDIT MANUALLY] -- Regenerate with: mise schema:generate:ddl:local CREATE TABLE IF NOT EXISTS gl_definition ( Loading
config/ontology/schema.yaml +6 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,12 @@ settings: - type: reorder name: by_target order_by: [target_id, relationship_kind, source_id, traversal_path, source_kind, target_kind] - type: reorder name: by_rel_source_kind order_by: [relationship_kind, source_kind, source_id, target_id, traversal_path, target_kind] - type: reorder name: by_rel_target_kind order_by: [relationship_kind, target_kind, target_id, source_id, traversal_path, source_kind] # `count(target) GROUP BY source` — e.g. definitions per file via # DEFINES. Without this, the wildcard scan over vendored JS bundles # (`echarts.js` ≈ 13K defs, `pdf.worker.js` ≈ 12K defs) materializes Loading
crates/query-engine/compiler/src/passes/codegen/ddl/mod.rs +43 −0 Original line number Diff line number Diff line Loading @@ -510,6 +510,49 @@ mod tests { } } #[test] fn code_edge_has_relationship_kind_reorder_projections() { let tables = generate_graph_tables(&ontology()); let code_edge = tables .iter() .find(|table| table.name == "gl_code_edge") .expect("gl_code_edge table should be generated"); let has_projection = |name: &str, expected: &[&str]| { code_edge.projections.iter().any(|projection| { matches!( projection, ProjectionDef::Reorder { name: projection_name, order_by } if projection_name == name && order_by.iter().map(String::as_str).eq(expected.iter().copied()) ) }) }; assert!(has_projection( "by_rel_source_kind", &[ "relationship_kind", "source_kind", "source_id", "target_id", "traversal_path", "target_kind", ], )); assert!(has_projection( "by_rel_target_kind", &[ "relationship_kind", "target_kind", "target_id", "source_id", "traversal_path", "source_kind", ], )); } #[test] fn every_table_has_system_columns() { for table in &generate_graph_tables(&ontology()) { Loading