# `callAllId` (procedure) - **Type:** PROCEDURE - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters _No parameters._ ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `callAllId`'`._ ## Narrative **Business context:** Rebuilds the materialised `sAllId` path column for every node in `gdsmodule` (the BACK navigation/module tree). The tree's parent-child links live in `sParentId`; `sAllId` caches the full ancestor chain (`-grandparent-parent-self`) so descendant-of queries become a `LIKE` match instead of a recursive CTE. Run after any module reparent / insert to keep the cache consistent. **What it does:** opens a cursor over `gdsmodule` ordered by `iOrder`. For each row: if it has a parent, reads the parent's own parent; writes `sAllId = '-grandparent-parent-self'` when both exist, `'-parent-self'` when only the parent exists, or `'-self'` when the row is a root. Three-level only — deeper trees would be truncated (matches xly's two-real-levels-plus-leaf module layout). **Invocation:** called by `GdsmoduleServiceImpl.updateGdsmodule()` after editing a module record (xlyManage), and by `LicenseServiceImpl.updateAllId()` (license-bootstrap path that reseeds the tree). No form-master / gdsmodule-hook binding — strictly a Java-triggered maintenance routine. Sibling procs `callAllIdbVisible`, `callAllIdChid`, `callAllIdChidVisible` are variants over the same `sAllId`/visibility/children-id pattern.