<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<p>The <strong>API and Technical Reference</strong> category provides authoritative, detailed documentation on every aspect of Geode’s interfaces, syntax, and configuration. This is your go-to resource for precise specifications, function signatures, parameter details, and technical specifications.</p>
<h3 id="gql-language-reference" class="position-relative d-flex align-items-center group">
<span>GQL Language Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="gql-language-reference"
aria-haspopup="dialog"
aria-label="Share link: GQL Language Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script>
<h4 id="syntax-overview" class="position-relative d-flex align-items-center group">
<span>Syntax Overview</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="syntax-overview"
aria-haspopup="dialog"
aria-label="Share link: Syntax Overview">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Geode implements ISO/IEC 39075:2024 Graph Query Language aligned to the full GQL conformance profile. The GQL syntax includes:</p>
<p><strong>Data Manipulation Language (DML)</strong>:</p>
<ul>
<li><code>MATCH</code> - Pattern matching to find graph elements</li>
<li><code>CREATE</code> - Create new nodes and relationships</li>
<li><code>SET</code> - Update properties and labels</li>
<li><code>REMOVE</code> - Delete properties and labels</li>
<li><code>DELETE</code> - Remove nodes and relationships</li>
<li><code>MERGE</code> - Match or create pattern</li>
<li><code>RETURN</code> - Specify result projection</li>
<li><code>WITH</code> - Pipeline query parts</li>
</ul>
<p><strong>Data Definition Language (DDL)</strong>:</p>
<ul>
<li><code>CREATE INDEX</code> - Create property indexes</li>
<li><code>DROP INDEX</code> - Remove indexes</li>
<li><code>CREATE CONSTRAINT</code> - Define data constraints</li>
<li><code>DROP CONSTRAINT</code> - Remove constraints</li>
<li><code>ANALYZE</code> - Update statistics</li>
</ul>
<p><strong>Transaction Control</strong>:</p>
<ul>
<li><code>BEGIN</code> - Start transaction</li>
<li><code>COMMIT</code> - Commit transaction</li>
<li><code>ROLLBACK</code> - Abort transaction</li>
<li><code>SAVEPOINT</code> - Create savepoint</li>
<li><code>RELEASE</code> - Release savepoint</li>
</ul>
<p><strong>Query Analysis</strong>:</p>
<ul>
<li><code>EXPLAIN</code> - Show execution plan</li>
<li><code>PROFILE</code> - Execute with performance metrics</li>
</ul>
<h4 id="pattern-syntax" class="position-relative d-flex align-items-center group">
<span>Pattern Syntax</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="pattern-syntax"
aria-haspopup="dialog"
aria-label="Share link: Pattern Syntax">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Node Patterns</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="p">()</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Anonymous</span><span class="w"> </span><span class="py">node</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">bound</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">variable</span><span class="w"> </span><span class="py">n</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Label</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">label</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Label1</span><span class="p">:</span><span class="nc">Label2</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">multiple</span><span class="w"> </span><span class="py">labels</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">n</span><span class="w"> </span><span class="p">{</span><span class="py">prop</span><span class="p">:</span><span class="w"> </span><span class="nc">value</span><span class="p">})</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">properties</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Label</span><span class="w"> </span><span class="p">{</span><span class="py">prop</span><span class="p">:</span><span class="w"> </span><span class="nc">value</span><span class="p">})</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Combined</span><span class="w">
</span></span></span></code></pre></div><p><strong>Relationship Patterns</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Directed</span><span class="w"> </span><span class="py">relationship</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">]</span><span class="err">-</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Undirected</span><span class="w"> </span><span class="py">relationship</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err"><-</span><span class="p">[</span><span class="py">r</span><span class="p">]</span><span class="err">-</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Directed</span><span class="w"> </span><span class="p">(</span><span class="py">opposite</span><span class="w"> </span><span class="py">direction</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Relationship</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="kd">type</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="nc">r</span><span class="p">:</span><span class="nc">TYPE1</span><span class="p">|</span><span class="py">TYPE2</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Multiple</span><span class="w"> </span><span class="kd">type</span><span class="nc">s</span><span class="w"> </span><span class="p">(</span><span class="py">OR</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="w"> </span><span class="p">{</span><span class="py">prop</span><span class="p">:</span><span class="w"> </span><span class="nc">value</span><span class="p">}]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">With</span><span class="w"> </span><span class="py">properties</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="err">*</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Variable</span><span class="w"> </span><span class="py">length</span><span class="w"> </span><span class="p">(</span><span class="py">any</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="err">*</span><span class="py">1</span><span class="err">.</span><span class="mf">.5</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Variable</span><span class="w"> </span><span class="py">length</span><span class="w"> </span><span class="p">(</span><span class="py">bounded</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="err">*.</span><span class="mf">.3</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Up</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">hops</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">TYPE</span><span class="err">*</span><span class="py">2</span><span class="err">..</span><span class="p">]</span><span class="err">-></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">At</span><span class="w"> </span><span class="py">least</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="py">hops</span><span class="w">
</span></span></span></code></pre></div><p><strong>Path Patterns</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">path</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="err">*</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Bind</span><span class="w"> </span><span class="py">entire</span><span class="w"> </span><span class="py">path</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SHORTEST</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="err">*</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Shortest</span><span class="w"> </span><span class="py">path</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ALL</span><span class="w"> </span><span class="py">SHORTEST</span><span class="w"> </span><span class="p">(</span><span class="py">a</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="err">*</span><span class="p">]</span><span class="err">-></span><span class="p">(</span><span class="py">b</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">All</span><span class="w"> </span><span class="py">shortest</span><span class="w"> </span><span class="py">paths</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="data-types" class="position-relative d-flex align-items-center group">
<span>Data Types</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="data-types"
aria-haspopup="dialog"
aria-label="Share link: Data Types">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Primitive Types</strong>:</p>
<ul>
<li><code>BOOLEAN</code> - true/false values</li>
<li><code>INTEGER</code> - 64-bit signed integers (-2^63 to 2^63-1)</li>
<li><code>FLOAT</code> - 64-bit IEEE 754 floating point</li>
<li><code>STRING</code> - UTF-8 encoded text</li>
<li><code>NULL</code> - Absence of value</li>
</ul>
<p><strong>Temporal Types</strong>:</p>
<ul>
<li><code>DATE</code> - Calendar date (YYYY-MM-DD)</li>
<li><code>TIME</code> - Time of day with timezone</li>
<li><code>TIMESTAMP</code> - Date and time with timezone</li>
<li><code>DURATION</code> - Time interval (ISO 8601 format)</li>
</ul>
<p><strong>Structured Types</strong>:</p>
<ul>
<li><code>LIST</code> - Ordered collection: <code>[1, 2, 3]</code></li>
<li><code>MAP</code> - Key-value pairs: <code>{name: 'Alice', age: 30}</code></li>
</ul>
<p><strong>Graph Types</strong>:</p>
<ul>
<li><code>NODE</code> - Graph node</li>
<li><code>RELATIONSHIP</code> - Graph edge</li>
<li><code>PATH</code> - Sequence of nodes and relationships</li>
</ul>
<p><strong>Spatial Types</strong> (extension):</p>
<ul>
<li><code>POINT</code> - Geographic or Cartesian coordinate</li>
</ul>
<p><strong>Vector Types</strong> (extension):</p>
<ul>
<li><code>VECTOR</code> - Fixed-dimension numeric array for embeddings</li>
</ul>
<h4 id="built-in-functions" class="position-relative d-flex align-items-center group">
<span>Built-in Functions</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="built-in-functions"
aria-haspopup="dialog"
aria-label="Share link: Built-in Functions">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Scalar Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">String</span><span class="w"> </span><span class="py">functions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">lower</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">upper</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">substring</span><span class="p">(</span><span class="py">string</span><span class="p">,</span><span class="w"> </span><span class="py">start</span><span class="p">,</span><span class="w"> </span><span class="py">length</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">trim</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">replace</span><span class="p">(</span><span class="py">string</span><span class="p">,</span><span class="w"> </span><span class="py">search</span><span class="p">,</span><span class="w"> </span><span class="py">replacement</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">length</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">starts_with</span><span class="p">(</span><span class="py">string</span><span class="p">,</span><span class="w"> </span><span class="py">prefix</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ends_with</span><span class="p">(</span><span class="py">string</span><span class="p">,</span><span class="w"> </span><span class="py">suffix</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">contains</span><span class="p">(</span><span class="py">string</span><span class="p">,</span><span class="w"> </span><span class="py">substring</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Numeric</span><span class="w"> </span><span class="py">functions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">abs</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">number</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ceil</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">floor</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">round</span><span class="p">(</span><span class="py">number</span><span class="p">,</span><span class="w"> </span><span class="py">precision</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">number</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">sqrt</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">float</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">power</span><span class="p">(</span><span class="py">base</span><span class="p">,</span><span class="w"> </span><span class="py">exponent</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">number</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">log</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">float</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">exp</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">float</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">sin</span><span class="p">(</span><span class="py">number</span><span class="p">),</span><span class="w"> </span><span class="py">cos</span><span class="p">(</span><span class="py">number</span><span class="p">),</span><span class="w"> </span><span class="py">tan</span><span class="p">(</span><span class="py">number</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">float</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Temporal</span><span class="w"> </span><span class="py">functions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">current_date</span><span class="p">()</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">date</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">current_time</span><span class="p">()</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">current_timestamp</span><span class="p">()</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">timestamp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">date</span><span class="p">(</span><span class="py">year</span><span class="p">,</span><span class="w"> </span><span class="py">month</span><span class="p">,</span><span class="w"> </span><span class="py">day</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">date</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">timestamp</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">timestamp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">duration</span><span class="p">(</span><span class="py">string</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">duration</span><span class="w">
</span></span></span></code></pre></div><p><strong>Aggregation Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">count</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">sum</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">number</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">avg</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">float</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">min</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">any</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">max</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">any</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">collect</span><span class="p">(</span><span class="py">expression</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">count</span><span class="p">{</span><span class="py">pattern</span><span class="p">}</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Count</span><span class="w"> </span><span class="py">matching</span><span class="w"> </span><span class="py">patterns</span><span class="w">
</span></span></span></code></pre></div><p><strong>List Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">size</span><span class="p">(</span><span class="py">list</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">head</span><span class="p">(</span><span class="py">list</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">any</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">First</span><span class="w"> </span><span class="py">element</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">last</span><span class="p">(</span><span class="py">list</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">any</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Last</span><span class="w"> </span><span class="py">element</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">tail</span><span class="p">(</span><span class="py">list</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">All</span><span class="w"> </span><span class="py">but</span><span class="w"> </span><span class="py">first</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">reverse</span><span class="p">(</span><span class="py">list</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">range</span><span class="p">(</span><span class="py">start</span><span class="p">,</span><span class="w"> </span><span class="py">end</span><span class="p">,</span><span class="w"> </span><span class="py">step</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="w">
</span></span></span></code></pre></div><p><strong>Path Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">length</span><span class="p">(</span><span class="py">path</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">integer</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Number</span><span class="w"> </span><span class="py">of</span><span class="w"> </span><span class="py">relationships</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">nodes</span><span class="p">(</span><span class="py">path</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="err"><</span><span class="py">node</span><span class="err">></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">All</span><span class="w"> </span><span class="py">nodes</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">path</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">relationships</span><span class="p">(</span><span class="py">path</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="err"><</span><span class="py">relationship</span><span class="err">></span><span class="w">
</span></span></span></code></pre></div><p><strong>Predicate Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">exists</span><span class="p">(</span><span class="py">pattern</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">all</span><span class="p">(</span><span class="py">var</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">list</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">predicate</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">any</span><span class="p">(</span><span class="py">var</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">list</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">predicate</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">none</span><span class="p">(</span><span class="py">var</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">list</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">predicate</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">single</span><span class="p">(</span><span class="py">var</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">list</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">predicate</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">boolean</span><span class="w">
</span></span></span></code></pre></div><p><strong>Type Functions</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="kd">type</span><span class="p">(</span><span class="nc">relationship</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">string</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Relationship</span><span class="w"> </span><span class="kd">type</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">labels</span><span class="p">(</span><span class="py">node</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="err"><</span><span class="py">string</span><span class="err">></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Node</span><span class="w"> </span><span class="py">labels</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">properties</span><span class="p">(</span><span class="py">element</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">map</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">All</span><span class="w"> </span><span class="py">properties</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">keys</span><span class="p">(</span><span class="py">element</span><span class="p">)</span><span class="w"> </span><span class="err">-></span><span class="w"> </span><span class="py">list</span><span class="err"><</span><span class="py">string</span><span class="err">></span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Property</span><span class="w"> </span><span class="py">names</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="client-library-apis" class="position-relative d-flex align-items-center group">
<span>Client Library APIs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="client-library-apis"
aria-haspopup="dialog"
aria-label="Share link: Client Library APIs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="python-api-reference" class="position-relative d-flex align-items-center group">
<span>Python API Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python-api-reference"
aria-haspopup="dialog"
aria-label="Share link: Python API Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">geode_client</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connection</span>
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">host</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">port</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3141</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="o">*</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">tls</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">verify_cert</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">timeout</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">30.0</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span> <span class="o">-></span> <span class="n">Connection</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connection methods</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">Connection</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">parameters</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="o">*</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">timeout</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></span><span class="line"><span class="cl"> <span class="p">)</span> <span class="o">-></span> <span class="n">ResultSet</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">prepare</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span>
</span></span><span class="line"><span class="cl"> <span class="p">)</span> <span class="o">-></span> <span class="n">PreparedStatement</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">transaction</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="o">*</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">isolation</span><span class="p">:</span> <span class="n">IsolationLevel</span> <span class="o">=</span> <span class="n">IsolationLevel</span><span class="o">.</span><span class="n">SERIALIZABLE</span>
</span></span><span class="line"><span class="cl"> <span class="p">)</span> <span class="o">-></span> <span class="n">Transaction</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">close</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Transaction methods</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">Transaction</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">parameters</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></span><span class="line"><span class="cl"> <span class="p">)</span> <span class="o">-></span> <span class="n">ResultSet</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">commit</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">rollback</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span>
</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">savepoint</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Savepoint</span>
</span></span></code></pre></div>
<h4 id="go-api-reference" class="position-relative d-flex align-items-center group">
<span>Go API Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="go-api-reference"
aria-haspopup="dialog"
aria-label="Share link: Go API Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">geode</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Connect to Geode server
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">func</span> <span class="nf">Connect</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">dsn</span> <span class="kt">string</span><span class="p">)</span> <span class="p">(</span><span class="o">*</span><span class="nx">DB</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// DB represents a connection pool
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">type</span> <span class="nx">DB</span> <span class="kd">struct</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// Query executes a query with optional parameters
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kd">func</span> <span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">DB</span><span class="p">)</span> <span class="nf">Query</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">args</span> <span class="o">...</span><span class="nx">any</span><span class="p">)</span> <span class="p">(</span><span class="o">*</span><span class="nx">Rows</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Exec executes a query without returning rows
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kd">func</span> <span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">DB</span><span class="p">)</span> <span class="nf">Exec</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">args</span> <span class="o">...</span><span class="nx">any</span><span class="p">)</span> <span class="p">(</span><span class="nx">Result</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Begin starts a new transaction
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kd">func</span> <span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">DB</span><span class="p">)</span> <span class="nf">Begin</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">)</span> <span class="p">(</span><span class="o">*</span><span class="nx">Tx</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Prepare creates a prepared statement
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kd">func</span> <span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">DB</span><span class="p">)</span> <span class="nf">Prepare</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">)</span> <span class="p">(</span><span class="o">*</span><span class="nx">Stmt</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Close closes all connections
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kd">func</span> <span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">DB</span><span class="p">)</span> <span class="nf">Close</span><span class="p">()</span> <span class="kt">error</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Tx represents a transaction
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">type</span> <span class="nx">Tx</span> <span class="kd">struct</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kd">func</span> <span class="p">(</span><span class="nx">tx</span> <span class="o">*</span><span class="nx">Tx</span><span class="p">)</span> <span class="nf">Query</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">args</span> <span class="o">...</span><span class="nx">any</span><span class="p">)</span> <span class="p">(</span><span class="o">*</span><span class="nx">Rows</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="kd">func</span> <span class="p">(</span><span class="nx">tx</span> <span class="o">*</span><span class="nx">Tx</span><span class="p">)</span> <span class="nf">Exec</span><span class="p">(</span><span class="nx">ctx</span> <span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">args</span> <span class="o">...</span><span class="nx">any</span><span class="p">)</span> <span class="p">(</span><span class="nx">Result</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="kd">func</span> <span class="p">(</span><span class="nx">tx</span> <span class="o">*</span><span class="nx">Tx</span><span class="p">)</span> <span class="nf">Commit</span><span class="p">()</span> <span class="kt">error</span>
</span></span><span class="line"><span class="cl"> <span class="kd">func</span> <span class="p">(</span><span class="nx">tx</span> <span class="o">*</span><span class="nx">Tx</span><span class="p">)</span> <span class="nf">Rollback</span><span class="p">()</span> <span class="kt">error</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h4 id="rust-api-reference" class="position-relative d-flex align-items-center group">
<span>Rust API Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="rust-api-reference"
aria-haspopup="dialog"
aria-label="Share link: Rust API Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Connection
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">connect</span><span class="p">(</span><span class="n">config</span>: <span class="nc">ConnectionConfig</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">Connection</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">impl</span><span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Execute query
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">execute</span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="o">&</span><span class="bp">self</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">query</span>: <span class="kp">&</span><span class="kt">str</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span>: <span class="kp">&</span><span class="p">[(</span><span class="o">&</span><span class="kt">str</span><span class="p">,</span><span class="w"> </span><span class="n">Value</span><span class="p">)]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">ResultSet</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Prepare statement
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">prepare</span><span class="p">(</span><span class="o">&</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">query</span>: <span class="kp">&</span><span class="kt">str</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">PreparedStatement</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Begin transaction
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">transaction</span><span class="p">(</span><span class="o">&</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">Transaction</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">impl</span><span class="w"> </span><span class="n">Transaction</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">execute</span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="o">&</span><span class="bp">self</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">query</span>: <span class="kp">&</span><span class="kt">str</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">params</span>: <span class="kp">&</span><span class="p">[(</span><span class="o">&</span><span class="kt">str</span><span class="p">,</span><span class="w"> </span><span class="n">Value</span><span class="p">)]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">ResultSet</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">commit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="p">()</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="p">()</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">savepoint</span><span class="p">(</span><span class="o">&</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">name</span>: <span class="kp">&</span><span class="kt">str</span><span class="p">)</span><span class="w"> </span>-> <span class="nb">Result</span><span class="o"><</span><span class="n">Savepoint</span><span class="o">></span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="configuration-reference" class="position-relative d-flex align-items-center group">
<span>Configuration Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="configuration-reference"
aria-haspopup="dialog"
aria-label="Share link: Configuration Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="server-configuration" class="position-relative d-flex align-items-center group">
<span>Server Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="server-configuration"
aria-haspopup="dialog"
aria-label="Share link: Server Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">geode serve <span class="o">[</span>OPTIONS<span class="o">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Options:
</span></span><span class="line"><span class="cl"> --listen <ADDR> Listen address <span class="o">[</span>default: 127.0.0.1:3141<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --data-dir <PATH> Data directory <span class="o">[</span>default: ./data<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --wal-dir <PATH> WAL directory <span class="o">[</span>default: <data-dir>/wal<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --log-level <LEVEL> Log level: error<span class="p">|</span>warn<span class="p">|</span>info<span class="p">|</span>debug<span class="p">|</span>trace
</span></span><span class="line"><span class="cl"> --max-connections <N> Maximum concurrent connections <span class="o">[</span>default: 1000<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --query-timeout <DURATION> Default query timeout <span class="o">[</span>default: 30s<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --tls-cert <PATH> TLS certificate file
</span></span><span class="line"><span class="cl"> --tls-key <PATH> TLS private key file
</span></span><span class="line"><span class="cl"> --index-cache-size <SIZE> Index cache size <span class="o">[</span>default: 1GB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --data-cache-size <SIZE> Data cache size <span class="o">[</span>default: 4GB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --checkpoint-interval <DUR> Checkpoint interval <span class="o">[</span>default: 5m<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --metrics-port <PORT> Prometheus metrics port <span class="o">[</span>default: 9090<span class="o">]</span>
</span></span><span class="line"><span class="cl"> --enable-audit-log Enable audit logging
</span></span><span class="line"><span class="cl"> --audit-log-path <PATH> Audit log file path
</span></span></code></pre></div>
<h4 id="environment-variables" class="position-relative d-flex align-items-center group">
<span>Environment Variables</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="environment-variables"
aria-haspopup="dialog"
aria-label="Share link: Environment Variables">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">GEODE_DATA_DIR</span><span class="o">=</span>/var/lib/geode
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_LOG_LEVEL</span><span class="o">=</span>info
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_MAX_CONNECTIONS</span><span class="o">=</span><span class="m">2000</span>
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_TLS_CERT</span><span class="o">=</span>/etc/geode/tls/cert.pem
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_TLS_KEY</span><span class="o">=</span>/etc/geode/tls/key.pem
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_INDEX_CACHE_SIZE</span><span class="o">=</span>2GB
</span></span><span class="line"><span class="cl"><span class="nv">GEODE_DATA_CACHE_SIZE</span><span class="o">=</span>8GB
</span></span></code></pre></div>
<h4 id="configuration-file" class="position-relative d-flex align-items-center group">
<span>Configuration File</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="configuration-file"
aria-haspopup="dialog"
aria-label="Share link: Configuration File">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">server</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">listen</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.0.0.0:3141"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_connections</span><span class="p">:</span><span class="w"> </span><span class="m">1000</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query_timeout</span><span class="p">:</span><span class="w"> </span><span class="l">30s</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">storage</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_dir</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/lib/geode"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">wal_dir</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/lib/geode/wal"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">cache</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">index_cache_size</span><span class="p">:</span><span class="w"> </span><span class="s2">"2GB"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_cache_size</span><span class="p">:</span><span class="w"> </span><span class="s2">"8GB"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query_plan_cache_size</span><span class="p">:</span><span class="w"> </span><span class="s2">"256MB"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">security</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tls</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cert</span><span class="p">:</span><span class="w"> </span><span class="s2">"/etc/geode/tls/cert.pem"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="s2">"/etc/geode/tls/key.pem"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">audit_log</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">"/var/log/geode/audit.log"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">performance</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">checkpoint_interval</span><span class="p">:</span><span class="w"> </span><span class="s2">"5m"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_wal_size</span><span class="p">:</span><span class="w"> </span><span class="s2">"1GB"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">worker_threads</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="c"># 0 = number of CPUs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metrics</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">9090</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="s2">"/metrics"</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="system-tables-and-metadata" class="position-relative d-flex align-items-center group">
<span>System Tables and Metadata</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="system-tables-and-metadata"
aria-haspopup="dialog"
aria-label="Share link: System Tables and Metadata">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="system-catalog" class="position-relative d-flex align-items-center group">
<span>System Catalog</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="system-catalog"
aria-haspopup="dialog"
aria-label="Share link: System Catalog">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">indexes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">indexes</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="py">index</span><span class="w"> </span><span class="py">statistics</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">index_statistics</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span><span class="nc">log</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="kd">query</span><span class="nc">_log</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">execution_time_ms</span><span class="w"> </span><span class="py">DESC</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">20</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="py">cache</span><span class="w"> </span><span class="py">statistics</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">cache_statistics</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="py">active</span><span class="w"> </span><span class="py">sessions</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">sessions</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">View</span><span class="w"> </span><span class="py">transaction</span><span class="w"> </span><span class="py">status</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">transactions</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="error-codes" class="position-relative d-flex align-items-center group">
<span>Error Codes</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="error-codes"
aria-haspopup="dialog"
aria-label="Share link: Error Codes">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Geode uses ISO-standard GQL error codes:</p>
<ul>
<li><code>00000</code> - Success</li>
<li><code>22000</code> - Data exception</li>
<li><code>23000</code> - Integrity constraint violation</li>
<li><code>42000</code> - Syntax error or access violation</li>
<li><code>40000</code> - Transaction rollback</li>
<li><code>40001</code> - Serialization failure</li>
<li><code>42P01</code> - Undefined table/label</li>
<li><code>42703</code> - Undefined property</li>
</ul>
<h3 id="best-practices-for-api-usage" class="position-relative d-flex align-items-center group">
<span>Best Practices for API Usage</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="best-practices-for-api-usage"
aria-haspopup="dialog"
aria-label="Share link: Best Practices for API Usage">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ol>
<li><strong>Use prepared statements</strong>: For queries executed repeatedly with different parameters</li>
<li><strong>Enable connection pooling</strong>: Reuse connections for better performance</li>
<li><strong>Handle errors appropriately</strong>: Implement retry logic for transient failures</li>
<li><strong>Use async APIs</strong>: Take advantage of concurrent query execution</li>
<li><strong>Close resources</strong>: Always close connections and transactions</li>
<li><strong>Monitor performance</strong>: Track query execution times and cache hit rates</li>
<li><strong>Leverage type safety</strong>: Use strongly-typed client library features</li>
<li><strong>Document parameter types</strong>: Ensure parameter values match expected GQL types</li>
</ol>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/gql-syntax/"
>GQL Syntax</a>
- Query language syntax details</li>
<li><a
href="/docs/client-libraries/"
>Client Libraries</a>
- Language-specific SDKs</li>
<li><a
href="/docs/configuration/"
>Configuration</a>
- Server setup and tuning</li>
<li><a
href="/docs/data-types/"
>Data Types</a>
- Type system details</li>
<li><a
href="/tags/functions/"
>Functions</a>
- Built-in function reference</li>
<li><a
href="/tags/api-reference/"
>API Documentation</a>
- Additional API details</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/iso-gql/"
>ISO GQL Specification</a>
- Official standard</li>
<li><a
href="/tags/protocol/"
>Protocol Specification</a>
- Wire protocol details</li>
<li><a
href="/docs/reference/types/"
>Type System</a>
- Complete type documentation</li>
<li><a
href="/guides/error-handling/"
>Error Handling</a>
- Error management patterns</li>
<li><a
href="/docs/performance/"
>Performance Tuning</a>
- Optimization techniques</li>
</ul>
Related ArticlesDocs
7 min
Pattern Matching in GQL Complete reference for pattern matching in Graph Query Language (GQL) including node patterns, relationship patterns, path patterns, and …
Docs
16 min
Complete GQL API Reference Comprehensive API reference for Geode's GQL implementation including all keywords, functions, data types, operators, and procedures with detailed …
Docs
7 min
API Reference and CLI Manual Command-line reference for `geode` (with geoded/geodec compatibility) and the full Geode GQL surface: keywords, functions, types, procedures, and …
Docs
5 min
DSN (Data Source Name) Specification Official DSN format for connecting to Geode over QUIC or gRPC, including authentication, graph binding, and TLS options
Docs
8 min
Aggregation Functions Complete reference for aggregation functions in GQL including COUNT, SUM, AVG, MIN, MAX, COLLECT, and grouping operations
Docs
14 min
GQL Operators Reference Complete reference for all GQL operators in Geode including arithmetic, logical, comparison, string, and advanced operators with precedence rules and …
Docs
10 min
Index Types Reference Complete reference for all index types in Geode including B-tree, Hash, Full-text, Spatial, Vector (HNSW), and specialized indexes with configuration …
Docs
5 min
Data Model Property graph data model, type system, and graph modeling patterns for Geode database
Docs
6 min
GQL Quick Reference Quick reference guide for Graph Query Language (GQL) syntax, common patterns, and essential commands in Geode
Docs
10 min
Data Types Reference Complete reference for all 50+ data types in Geode including core types, temporal types, collection types, vector types, geographic types, and …
Docs
8 min
Statistics and Metrics Reference Complete reference for Geode statistics, metrics, and monitoring including query statistics, storage metrics, index statistics, and Prometheus …
Docs
6 min
EXPLAIN Command Reference for the EXPLAIN command in GQL to analyze query execution plans without running queries