Bien que GQL soit un langage de requête graphique, il utilise des tables pour conserver les résultats pendant l'exécution des requêtes. Ces tables se composent de lignes de dossiers correspondant à des nodes, edges, paths, ou valeurs référencées par des variables.
Chaque instruction GQL produit une table de liaison en tant que conteneur pour les liaisons de variables. Par exemple, l'instruction MATCH
génère une table de liaison qui expose les éléments produits et les variables de chemin comme colonnes. Une fois construites et peuplées, les tables de liaison restent inchangées.
D'autre part, la table de travail est la table temporaire qui stocke les données intermédiaires. La table de travail évolue au fur et à mesure de l'avancement de la requête, d'où le terme table de travail actuelle. Bien qu'elle ne soit pas explicitement visible pour les utilisateurs, la table de travail joue un rôle critique en coulisses.
Le contexte d'exécution de chaque instruction permet la transition de la table de travail au sein de la requête. Le contexte d'exécution prend la table de travail actuelle comme la table de travail entrante pour l'instruction, et définit la table de travail sortante comme la jonction de la table de travail entrante et de la table de liaison produite par l'instruction.
La première instruction commence avec une table de travail vide. La table de liaison de l'instruction RETURN
est la table finale et est définie comme la table de travail sortante, qui est renvoyée au client.
FOR target IN ["mochaeach", "purplechalk", "Brainy"]
MATCH (c:Club)
MATCH (u)-[e:Joins]->(c) WHERE u.name = target
FILTER e.memberNo = 1
RETURN target AS User, c._id AS Club