# `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.
