<!-- CANARY: REQ=REQ-GQL-017-STATUS; FEATURE="Docs"; ASPECT=StatusWireMapping; STATUS=TESTED; OWNER=engine; UPDATED=2026-01-16 --> <p>Geode follows ISO/IEC SQL error code standards for consistent error reporting across all client libraries and interfaces. This reference provides complete documentation of all error codes, their meanings, and resolution strategies.</p> <h3 id="error-code-format" class="position-relative d-flex align-items-center group"> <span>Error Code Format</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-code-format" aria-haspopup="dialog" aria-label="Share link: Error Code Format"> <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><p>Geode uses two types of error codes:</p> <ol> <li><strong>GQLSTATUS Codes</strong>: 5-character SQL-standard status codes (e.g., <code>00000</code>, <code>42000</code>)</li> <li><strong>Internal Error Codes</strong>: Descriptive error names (e.g., <code>ERR_OOM</code>, <code>ERR_FLOAT_NAN</code>)</li> </ol> <h4 id="error-response-structure" class="position-relative d-flex align-items-center group"> <span>Error Response Structure</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-response-structure" aria-haspopup="dialog" aria-label="Share link: Error Response Structure"> <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>All error responses follow this JSON format:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status_class&#34;</span><span class="p">:</span> <span class="s2">&#34;42000&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;42001&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;message&#34;</span><span class="p">:</span> <span class="s2">&#34;Undefined table: NonExistentTable&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;table_name&#34;</span><span class="p">:</span> <span class="s2">&#34;NonExistentTable&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;suggestion&#34;</span><span class="p">:</span> <span class="s2">&#34;Check table name spelling or create the table first&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="gqlstatus-codes" class="position-relative d-flex align-items-center group"> <span>GQLSTATUS 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="gqlstatus-codes" aria-haspopup="dialog" aria-label="Share link: GQLSTATUS 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> <h4 id="success-codes" class="position-relative d-flex align-items-center group"> <span>Success 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="success-codes" aria-haspopup="dialog" aria-label="Share link: Success 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> </h4><table> <thead> <tr> <th>Code</th> <th>Class</th> <th>Description</th> <th>Action Required</th> </tr> </thead> <tbody> <tr> <td><code>00000</code></td> <td>Success</td> <td>Query executed successfully</td> <td>None</td> </tr> <tr> <td><code>01000</code></td> <td>Warning</td> <td>Warning (with successful completion)</td> <td>Review warning message</td> </tr> <tr> <td><code>02000</code></td> <td>No Data</td> <td>Query returned no rows</td> <td>None (expected in some cases)</td> </tr> </tbody> </table> <p><strong>Example</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">Returns</span><span class="w"> </span><span class="py">00000</span><span class="w"> </span><span class="kd">on</span><span class="w"> </span><span class="py">success</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Alice</span><span class="err">&#39;</span><span class="p">})</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">Returns</span><span class="w"> </span><span class="py">02000</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">no</span><span class="w"> </span><span class="py">matches</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">NonExistent</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="client-errors-class-0a" class="position-relative d-flex align-items-center group"> <span>Client Errors (Class 0A)</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-errors-class-0a" aria-haspopup="dialog" aria-label="Share link: Client Errors (Class 0A)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>0A000</code></td> <td>Feature not supported</td> <td>Unsupported GQL feature or operation</td> <td>Check GQL compliance documentation</td> </tr> <tr> <td><code>0A001</code></td> <td>Transaction already active</td> <td>BEGIN called while transaction active</td> <td>COMMIT or ROLLBACK current transaction first</td> </tr> <tr> <td><code>0A002</code></td> <td>No active transaction</td> <td>COMMIT/ROLLBACK without BEGIN</td> <td>Start transaction with BEGIN before committing</td> </tr> </tbody> </table> <p><strong>Examples</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">0A001</span><span class="p">:</span><span class="w"> </span><span class="nc">Transaction</span><span class="w"> </span><span class="py">already</span><span class="w"> </span><span class="py">active</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">0A002</span><span class="p">:</span><span class="w"> </span><span class="nc">No</span><span class="w"> </span><span class="py">active</span><span class="w"> </span><span class="py">transaction</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="w"> </span><span class="p">(</span><span class="py">no</span><span class="w"> </span><span class="py">transaction</span><span class="w"> </span><span class="py">started</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="err">--</span><span class="w"> </span><span class="py">Correct</span><span class="w"> </span><span class="py">usage</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Bob</span><span class="err">&#39;</span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="data-exception-class-22" class="position-relative d-flex align-items-center group"> <span>Data Exception (Class 22)</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-exception-class-22" aria-haspopup="dialog" aria-label="Share link: Data Exception (Class 22)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>22000</code></td> <td>Data exception</td> <td>General data error</td> <td>See specific code</td> </tr> <tr> <td><code>22001</code></td> <td>String data, right truncation</td> <td>String exceeds maximum length</td> <td>Reduce string length or increase limit</td> </tr> <tr> <td><code>22002</code></td> <td>Null value, no indicator</td> <td>NULL in non-nullable context</td> <td>Provide non-null value</td> </tr> <tr> <td><code>22003</code></td> <td>Numeric value out of range</td> <td>Number too large/small for type</td> <td>Use appropriate numeric type</td> </tr> <tr> <td><code>22004</code></td> <td>Null value not allowed</td> <td>NULL where NOT NULL constraint exists</td> <td>Provide non-null value</td> </tr> <tr> <td><code>22005</code></td> <td>Error in assignment</td> <td>Type mismatch in assignment</td> <td>Check type compatibility</td> </tr> <tr> <td><code>22007</code></td> <td>Invalid datetime format</td> <td>Malformed date/time string</td> <td>Use ISO 8601 format</td> </tr> <tr> <td><code>22008</code></td> <td>Datetime field overflow</td> <td>Date/time value out of valid range</td> <td>Check date/time bounds</td> </tr> <tr> <td><code>22012</code></td> <td>Division by zero</td> <td>Arithmetic division by zero</td> <td>Add zero check before division</td> </tr> <tr> <td><code>22015</code></td> <td>Interval field overflow</td> <td>Interval exceeds maximum</td> <td>Use smaller interval</td> </tr> <tr> <td><code>22018</code></td> <td>Invalid character value</td> <td>Invalid encoding or character</td> <td>Check string encoding (UTF-8)</td> </tr> <tr> <td><code>22019</code></td> <td>Invalid escape character</td> <td>Bad escape sequence in string</td> <td>Use valid escape sequences</td> </tr> <tr> <td><code>22021</code></td> <td>Character not in repertoire</td> <td>Character not supported in encoding</td> <td>Use supported UTF-8 characters</td> </tr> <tr> <td><code>22023</code></td> <td>Invalid parameter value</td> <td>Function parameter invalid</td> <td>Check parameter constraints</td> </tr> <tr> <td><code>22025</code></td> <td>Invalid escape sequence</td> <td>Bad regex or LIKE escape</td> <td>Fix escape sequence</td> </tr> <tr> <td><code>22027</code></td> <td>Trim error</td> <td>Invalid TRIM specification</td> <td>Check TRIM syntax</td> </tr> </tbody> </table> <p><strong>Examples</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">22001</span><span class="p">:</span><span class="w"> </span><span class="nc">String</span><span class="w"> </span><span class="py">truncation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="nc">Char</span><span class="p">(</span><span class="err">&#39;</span><span class="py">VeryLongNameThatExceedsLimit</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">10</span><span class="p">)})</span><span class="err">;</span><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">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">String</span><span class="w"> </span><span class="err">&#39;</span><span class="py">VeryLongNameThatExceedsLimit</span><span class="err">&#39;</span><span class="w"> </span><span class="py">exceeds</span><span class="w"> </span><span class="py">Char</span><span class="p">(</span><span class="py">10</span><span class="p">)</span><span class="w"> </span><span class="py">limit</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">22003</span><span class="p">:</span><span class="w"> </span><span class="nc">Numeric</span><span class="w"> </span><span class="py">out</span><span class="w"> </span><span class="py">of</span><span class="w"> </span><span class="py">range</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">SmallInt</span><span class="p">(</span><span class="py">100000</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">Value</span><span class="w"> </span><span class="py">exceeds</span><span class="w"> </span><span class="py">i16</span><span class="w"> </span><span class="py">range</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">22007</span><span class="p">:</span><span class="w"> </span><span class="nc">Invalid</span><span class="w"> </span><span class="py">datetime</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">Date</span><span class="p">(</span><span class="err">&#39;</span><span class="py">invalid</span><span class="err">-</span><span class="py">date</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">22012</span><span class="p">:</span><span class="w"> </span><span class="nc">Division</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">zero</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">0</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">Correct</span><span class="w"> </span><span class="py">usage</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">CASE</span><span class="w"> </span><span class="py">WHEN</span><span class="w"> </span><span class="nv">$divisor</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">0</span><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="py">1</span><span class="w"> </span><span class="py">ELSE</span><span class="w"> </span><span class="nv">$divisor</span><span class="w"> </span><span class="py">END</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="integrity-constraint-violation-class-23" class="position-relative d-flex align-items-center group"> <span>Integrity Constraint Violation (Class 23)</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="integrity-constraint-violation-class-23" aria-haspopup="dialog" aria-label="Share link: Integrity Constraint Violation (Class 23)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>23000</code></td> <td>Integrity constraint violation</td> <td>General constraint violation</td> <td>See specific code</td> </tr> <tr> <td><code>23001</code></td> <td>Restrict violation</td> <td>Foreign key constraint prevents delete</td> <td>Delete dependent records first</td> </tr> <tr> <td><code>23502</code></td> <td>Not null violation</td> <td>NULL value in NOT NULL column</td> <td>Provide non-null value</td> </tr> <tr> <td><code>23503</code></td> <td>Foreign key violation</td> <td>Referenced record doesn&rsquo;t exist</td> <td>Create referenced record first</td> </tr> <tr> <td><code>23505</code></td> <td>Unique violation</td> <td>Duplicate value in unique index</td> <td>Use unique value</td> </tr> <tr> <td><code>23514</code></td> <td>Check constraint violation</td> <td>Value fails CHECK constraint</td> <td>Provide valid value</td> </tr> </tbody> </table> <p><strong>Examples</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">23502</span><span class="p">:</span><span class="w"> </span><span class="nc">Not</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="py">violation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">age</span><span class="p">:</span><span class="w"> </span><span class="nc">null</span><span class="p">})</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">age</span><span class="w"> </span><span class="py">has</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">constraint</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">23505</span><span class="p">:</span><span class="w"> </span><span class="nc">Unique</span><span class="w"> </span><span class="py">violation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p1</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="nc">email</span><span class="w"> </span><span class="py">protected</span><span class="p">]</span><span class="err">&#39;</span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p2</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="nc">email</span><span class="w"> </span><span class="py">protected</span><span class="p">]</span><span class="err">&#39;</span><span class="p">})</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">email</span><span class="w"> </span><span class="py">is</span><span class="w"> </span><span class="py">UNIQUE</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">23503</span><span class="p">:</span><span class="w"> </span><span class="nc">Foreign</span><span class="w"> </span><span class="py">key</span><span class="w"> </span><span class="py">violation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">o</span><span class="p">:</span><span class="nc">Order</span><span class="w"> </span><span class="p">{</span><span class="py">customer_id</span><span class="p">:</span><span class="w"> </span><span class="nc">999</span><span class="p">})</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">customer</span><span class="w"> </span><span class="py">999</span><span class="w"> </span><span class="py">doesn</span><span class="err">&#39;</span><span class="py">t</span><span class="w"> </span><span class="py">exist</span><span class="w"> </span></span></span></code></pre></div> <h4 id="syntax-error-or-access-violation-class-42" class="position-relative d-flex align-items-center group"> <span>Syntax Error or Access Violation (Class 42)</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-error-or-access-violation-class-42" aria-haspopup="dialog" aria-label="Share link: Syntax Error or Access Violation (Class 42)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>42000</code></td> <td>Syntax error or access rule violation</td> <td>General syntax error</td> <td>Check GQL syntax</td> </tr> <tr> <td><code>42001</code></td> <td>Undefined object</td> <td>Table, column, or function not found</td> <td>Verify object names</td> </tr> <tr> <td><code>42002</code></td> <td>Duplicate object</td> <td>Object already exists</td> <td>Use IF NOT EXISTS or drop first</td> </tr> <tr> <td><code>42601</code></td> <td>Syntax error</td> <td>Malformed GQL query</td> <td>Fix query syntax</td> </tr> <tr> <td><code>42602</code></td> <td>Invalid name</td> <td>Reserved keyword or invalid identifier</td> <td>Use quotes for identifiers</td> </tr> <tr> <td><code>42611</code></td> <td>Invalid column definition</td> <td>Bad column specification</td> <td>Check column syntax</td> </tr> <tr> <td><code>42701</code></td> <td>Duplicate column</td> <td>Column specified multiple times</td> <td>Remove duplicate</td> </tr> <tr> <td><code>42703</code></td> <td>Undefined column</td> <td>Column doesn&rsquo;t exist</td> <td>Check column name</td> </tr> <tr> <td><code>42704</code></td> <td>Undefined object</td> <td>Referenced object not found</td> <td>Create object or fix reference</td> </tr> <tr> <td><code>42710</code></td> <td>Duplicate object</td> <td>Object name collision</td> <td>Use unique name</td> </tr> <tr> <td><code>42712</code></td> <td>Duplicate alias</td> <td>Alias used multiple times</td> <td>Use unique aliases</td> </tr> <tr> <td><code>42723</code></td> <td>Duplicate function</td> <td>Function already defined</td> <td>Drop function or use different name</td> </tr> <tr> <td><code>42883</code></td> <td>Undefined function</td> <td>Function not found</td> <td>Check function name and arguments</td> </tr> <tr> <td><code>42939</code></td> <td>Reserved name</td> <td>Using reserved keyword</td> <td>Quote identifier or use different name</td> </tr> <tr> <td><code>42P01</code></td> <td>Undefined table</td> <td>Table doesn&rsquo;t exist</td> <td>Create table first</td> </tr> <tr> <td><code>42P02</code></td> <td>Undefined parameter</td> <td>Parameter not provided</td> <td>Supply parameter value</td> </tr> <tr> <td><code>42P07</code></td> <td>Duplicate table</td> <td>Table already exists</td> <td>Use IF NOT EXISTS or different name</td> </tr> </tbody> </table> <p><strong>Examples</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">42001</span><span class="p">:</span><span class="w"> </span><span class="nc">Undefined</span><span class="w"> </span><span class="py">object</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">NonExistentLabel</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">;</span><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">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">Label</span><span class="w"> </span><span class="err">&#39;</span><span class="py">NonExistentLabel</span><span class="err">&#39;</span><span class="w"> </span><span class="py">not</span><span class="w"> </span><span class="py">found</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">42002</span><span class="p">:</span><span class="w"> </span><span class="nc">Duplicate</span><span class="w"> </span><span class="py">object</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">person_email</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">person_email</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">42601</span><span class="p">:</span><span class="w"> </span><span class="nc">Syntax</span><span class="w"> </span><span class="py">error</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">WHERE</span><span class="w"> </span><span class="py">after</span><span class="w"> </span><span class="py">RETURN</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">42P01</span><span class="p">:</span><span class="w"> </span><span class="nc">Undefined</span><span class="w"> </span><span class="py">table</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">;</span><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">ERROR</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">Person</span><span class="w"> </span><span class="py">label</span><span class="w"> </span><span class="py">doesn</span><span class="err">&#39;</span><span class="py">t</span><span class="w"> </span><span class="py">exist</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">Correct</span><span class="p">:</span><span class="w"> </span><span class="nc">Use</span><span class="w"> </span><span class="py">IF</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">EXISTS</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">IF</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">EXISTS</span><span class="w"> </span><span class="py">person_email</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="insufficient-resources-class-53" class="position-relative d-flex align-items-center group"> <span>Insufficient Resources (Class 53)</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="insufficient-resources-class-53" aria-haspopup="dialog" aria-label="Share link: Insufficient Resources (Class 53)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>53000</code></td> <td>Insufficient resources</td> <td>General resource issue</td> <td>Increase resources or optimize query</td> </tr> <tr> <td><code>53100</code></td> <td>Disk full</td> <td>Out of disk space</td> <td>Free disk space</td> </tr> <tr> <td><code>53200</code></td> <td>Out of memory</td> <td>Insufficient RAM</td> <td>Increase memory or reduce query complexity</td> </tr> <tr> <td><code>53300</code></td> <td>Too many connections</td> <td>Connection pool exhausted</td> <td>Close unused connections or increase pool size</td> </tr> <tr> <td><code>53400</code></td> <td>Configuration limit exceeded</td> <td>Limit setting reached</td> <td>Adjust configuration limits</td> </tr> </tbody> </table> <p><strong>Examples</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">53200</span><span class="p">:</span><span class="w"> </span><span class="nc">Out</span><span class="w"> </span><span class="py">of</span><span class="w"> </span><span class="py">memory</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="err">*</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">Unbounded</span><span class="w"> </span><span class="py">path</span><span class="w"> </span><span class="py">may</span><span class="w"> </span><span class="py">exhaust</span><span class="w"> </span><span class="py">memory</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="p">,</span><span class="w"> </span><span class="py">m</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">Correct</span><span class="p">:</span><span class="w"> </span><span class="nc">Limit</span><span class="w"> </span><span class="py">path</span><span class="w"> </span><span class="py">length</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</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="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">123</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="p">,</span><span class="w"> </span><span class="py">m</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">100</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="system-error-class-58" class="position-relative d-flex align-items-center group"> <span>System Error (Class 58)</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-error-class-58" aria-haspopup="dialog" aria-label="Share link: System Error (Class 58)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>58000</code></td> <td>System error</td> <td>General I/O error</td> <td>Check system logs</td> </tr> <tr> <td><code>58030</code></td> <td>I/O error</td> <td>Disk read/write failure</td> <td>Check disk health</td> </tr> <tr> <td><code>58P01</code></td> <td>Undefined file</td> <td>File not found</td> <td>Verify file path</td> </tr> <tr> <td><code>58P02</code></td> <td>Duplicate file</td> <td>File already exists</td> <td>Delete file or use different path</td> </tr> </tbody> </table> <h4 id="internal-error-class-xx" class="position-relative d-flex align-items-center group"> <span>Internal Error (Class XX)</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="internal-error-class-xx" aria-haspopup="dialog" aria-label="Share link: Internal Error (Class XX)"> <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><table> <thead> <tr> <th>Code</th> <th>Description</th> <th>Common Causes</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>XX000</code></td> <td>Internal error</td> <td>Database bug</td> <td>Report to developers with reproduction steps</td> </tr> <tr> <td><code>XX001</code></td> <td>Data corrupted</td> <td>Storage corruption</td> <td>Restore from backup</td> </tr> <tr> <td><code>XX002</code></td> <td>Index corrupted</td> <td>Index integrity violation</td> <td>Rebuild index</td> </tr> </tbody> </table> <h3 id="internal-error-codes" class="position-relative d-flex align-items-center group"> <span>Internal 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="internal-error-codes" aria-haspopup="dialog" aria-label="Share link: Internal 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> <h4 id="memory-errors" class="position-relative d-flex align-items-center group"> <span>Memory Errors</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="memory-errors" aria-haspopup="dialog" aria-label="Share link: Memory Errors"> <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><table> <thead> <tr> <th>Error Code</th> <th>Description</th> <th>Context</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>ERR_OOM</code></td> <td>Out of memory</td> <td>Memory allocation failed</td> <td>Reduce query complexity or increase system memory</td> </tr> <tr> <td><code>ERR_ALLOCATION_FAILED</code></td> <td>Memory allocation error</td> <td>Allocator returned error</td> <td>Check system resources</td> </tr> </tbody> </table> <p><strong>Example</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">ERR_OOM</span><span class="p">:</span><span class="w"> </span><span class="nc">Large</span><span class="w"> </span><span class="py">aggregation</span><span class="w"> </span><span class="py">without</span><span class="w"> </span><span class="py">limits</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="err">*</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">all_nodes</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">May</span><span class="w"> </span><span class="py">cause</span><span class="w"> </span><span class="py">OOM</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">Solution</span><span class="p">:</span><span class="w"> </span><span class="nc">Add</span><span class="w"> </span><span class="py">limits</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="err">*</span><span class="py">1</span><span class="err">.</span><span class="mf">.3</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">123</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">collect</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">nearby_nodes</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">1000</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="type-errors" class="position-relative d-flex align-items-center group"> <span>Type Errors</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="type-errors" aria-haspopup="dialog" aria-label="Share link: Type Errors"> <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><table> <thead> <tr> <th>Error Code</th> <th>Description</th> <th>Context</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>ERR_FLOAT_NAN</code></td> <td>Invalid float (NaN or Inf)</td> <td>Float arithmetic produced NaN/Inf</td> <td>Check for division by zero or invalid operations</td> </tr> <tr> <td><code>ERR_CHAR_LEN</code></td> <td>String exceeds length limit</td> <td>String longer than declared Char(n)</td> <td>Reduce string length or use Varchar/Text</td> </tr> <tr> <td><code>ERR_DEC_DIV_ZERO</code></td> <td>Decimal division by zero</td> <td>Division by zero in Decimal arithmetic</td> <td>Add zero check</td> </tr> <tr> <td><code>ERR_IP_PARSE</code></td> <td>Invalid IP address</td> <td>Malformed IP address string</td> <td>Use valid IPv4/IPv6 format</td> </tr> <tr> <td><code>ERR_JSON_PARSE</code></td> <td>Invalid JSON</td> <td>Malformed JSON string</td> <td>Fix JSON syntax</td> </tr> <tr> <td><code>ERR_RANGE_BOUNDS</code></td> <td>Invalid range bounds</td> <td>Range start &gt; end or invalid inclusive/exclusive</td> <td>Fix range bounds</td> </tr> </tbody> </table> <p><strong>Examples</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">ERR_FLOAT_NAN</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">sqrt</span><span class="p">(</span><span class="err">-</span><span class="py">1</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</span><span class="p">:</span><span class="w"> </span><span class="nc">NaN</span><span class="w"> </span><span class="py">not</span><span class="w"> </span><span class="py">allowed</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">ERR_CHAR_LEN</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">code</span><span class="p">:</span><span class="w"> </span><span class="nc">Char</span><span class="p">(</span><span class="err">&#39;</span><span class="py">TOOLONG</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">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">ERROR</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">ERR_IP_PARSE</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">IpAddr</span><span class="p">(</span><span class="err">&#39;</span><span class="py">999</span><span class="mf">.999.999.999</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">ERR_JSON_PARSE</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">Json</span><span class="p">(</span><span class="err">&#39;</span><span class="p">{</span><span class="py">invalid</span><span class="w"> </span><span class="py">json</span><span class="p">}</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">ERROR</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">Correct</span><span class="w"> </span><span class="py">usage</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">IpAddr</span><span class="p">(</span><span class="err">&#39;</span><span class="py">192</span><span class="mf">.168.1.1</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">Json</span><span class="p">(</span><span class="err">&#39;</span><span class="p">{</span><span class="s">&#34;valid&#34;</span><span class="p">:</span><span class="w"> </span><span class="s">&#34;json&#34;</span><span class="p">}</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="index-errors" class="position-relative d-flex align-items-center group"> <span>Index Errors</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="index-errors" aria-haspopup="dialog" aria-label="Share link: Index Errors"> <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><table> <thead> <tr> <th>Error Code</th> <th>Description</th> <th>Context</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>ERR_INDEX_CORRUPTION</code></td> <td>Index structure corrupted</td> <td>Index integrity check failed</td> <td>Rebuild index</td> </tr> <tr> <td><code>ERR_INDEX_FULL</code></td> <td>Index size limit exceeded</td> <td>Index too large</td> <td>Partition data or increase limits</td> </tr> </tbody> </table> <h4 id="network-errors" class="position-relative d-flex align-items-center group"> <span>Network Errors</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="network-errors" aria-haspopup="dialog" aria-label="Share link: Network Errors"> <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><table> <thead> <tr> <th>Error Code</th> <th>Description</th> <th>Context</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>ERR_CONNECTION_FAILED</code></td> <td>Connection failure</td> <td>Cannot connect to server</td> <td>Check network and server status</td> </tr> <tr> <td><code>ERR_TIMEOUT</code></td> <td>Operation timeout</td> <td>Query or connection timed out</td> <td>Increase timeout or optimize query</td> </tr> <tr> <td><code>ERR_PROTOCOL_ERROR</code></td> <td>Protocol violation</td> <td>Invalid message format</td> <td>Update client library</td> </tr> </tbody> </table> <h4 id="transaction-errors" class="position-relative d-flex align-items-center group"> <span>Transaction Errors</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="transaction-errors" aria-haspopup="dialog" aria-label="Share link: Transaction Errors"> <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><table> <thead> <tr> <th>Error Code</th> <th>Description</th> <th>Context</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td><code>ERR_TRANSACTION_CONFLICT</code></td> <td>Transaction conflict</td> <td>Concurrent modification conflict</td> <td>Retry transaction</td> </tr> <tr> <td><code>ERR_DEADLOCK</code></td> <td>Deadlock detected</td> <td>Circular lock dependency</td> <td>Retry transaction</td> </tr> <tr> <td><code>ERR_SERIALIZATION_FAILURE</code></td> <td>Serialization failure</td> <td>SSI conflict in SERIALIZABLE isolation</td> <td>Retry transaction</td> </tr> </tbody> </table> <p><strong>Example</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">ERR_TRANSACTION_CONFLICT</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">BEGIN</span><span class="w"> </span><span class="py">TRANSACTION</span><span class="w"> </span><span class="py">ISOLATION</span><span class="w"> </span><span class="py">LEVEL</span><span class="w"> </span><span class="py">SERIALIZABLE</span><span class="w"> </span><span class="py">SNAPSHOT</span><span class="err">;</span><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="kd">...</span><span class="w"> </span><span class="py">operations</span><span class="w"> </span><span class="kd">...</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">COMMIT</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">May</span><span class="w"> </span><span class="py">fail</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">conflict</span><span class="p">,</span><span class="w"> </span><span class="py">retry</span><span class="w"> </span><span class="py">needed</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">Retry</span><span class="w"> </span><span class="py">logic</span><span class="w"> </span><span class="p">(</span><span class="py">pseudocode</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">max_retries</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">for</span><span class="w"> </span><span class="py">attempt</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">range</span><span class="p">(</span><span class="py">max_retries</span><span class="p">):</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">try</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">execute_transaction</span><span class="p">()</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">break</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">except</span><span class="w"> </span><span class="py">ERR_TRANSACTION_CONFLICT</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">if</span><span class="w"> </span><span class="py">attempt</span><span class="w"> </span><span class="p">==</span><span class="w"> </span><span class="py">max_retries</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">1</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">raise</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">sleep</span><span class="p">(</span><span class="py">exponential_backoff</span><span class="p">(</span><span class="py">attempt</span><span class="p">))</span><span class="w"> </span></span></span></code></pre></div> <h3 id="error-handling-best-practices" class="position-relative d-flex align-items-center group"> <span>Error Handling Best Practices</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-handling-best-practices" aria-haspopup="dialog" aria-label="Share link: Error Handling Best Practices"> <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="check-for-common-errors" class="position-relative d-flex align-items-center group"> <span>Check for Common Errors</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="check-for-common-errors" aria-haspopup="dialog" aria-label="Share link: Check for Common Errors"> <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="c1"># Python client example</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">Client</span><span class="p">,</span> <span class="n">QueryError</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">3141</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">page</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;MATCH (p:Person) RETURN p&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="n">QueryError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">message</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&#34;42P01:&#34;</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;Table doesn&#39;t exist - creating it&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;CREATE (:Person {name: &#39;Alice&#39;})&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">elif</span> <span class="n">message</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&#34;53200:&#34;</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;Out of memory - reducing query complexity&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">page</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;MATCH (p:Person) RETURN p LIMIT 100&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">else</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span></code></pre></div> <h4 id="retry-transient-errors" class="position-relative d-flex align-items-center group"> <span>Retry Transient Errors</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="retry-transient-errors" aria-haspopup="dialog" aria-label="Share link: Retry Transient Errors"> <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="c1">// Go client example </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kn">import</span> <span class="s">&#34;geodedb.com/geode&#34;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">executeWithRetry</span><span class="p">(</span><span class="nx">db</span> <span class="o">*</span><span class="nx">sql</span><span class="p">.</span><span class="nx">DB</span><span class="p">,</span> <span class="nx">query</span> <span class="kt">string</span><span class="p">,</span> <span class="nx">maxRetries</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">error</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p">&lt;</span> <span class="nx">maxRetries</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">_</span><span class="p">,</span> <span class="nx">err</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">query</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">err</span> <span class="o">==</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="kc">nil</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">// Check if error is retryable </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">if</span> <span class="nf">isRetryable</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">time</span><span class="p">.</span><span class="nf">Sleep</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nf">Duration</span><span class="p">(</span><span class="nx">i</span><span class="o">*</span><span class="mi">100</span><span class="p">)</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">continue</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="k">return</span> <span class="nx">err</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Errorf</span><span class="p">(</span><span class="s">&#34;max retries exceeded&#34;</span><span class="p">)</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="kd">func</span> <span class="nf">isRetryable</span><span class="p">(</span><span class="nx">err</span> <span class="kt">error</span><span class="p">)</span> <span class="kt">bool</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="c1">// Transaction conflicts, deadlocks, timeouts </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">statusCode</span> <span class="o">:=</span> <span class="nf">extractStatusCode</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">statusCode</span> <span class="o">==</span> <span class="s">&#34;ERR_TRANSACTION_CONFLICT&#34;</span> <span class="o">||</span> </span></span><span class="line"><span class="cl"> <span class="nx">statusCode</span> <span class="o">==</span> <span class="s">&#34;ERR_DEADLOCK&#34;</span> <span class="o">||</span> </span></span><span class="line"><span class="cl"> <span class="nx">statusCode</span> <span class="o">==</span> <span class="s">&#34;ERR_TIMEOUT&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="validate-input-data" class="position-relative d-flex align-items-center group"> <span>Validate Input Data</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="validate-input-data" aria-haspopup="dialog" aria-label="Share link: Validate Input Data"> <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">// Rust client example </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">use</span><span class="w"> </span><span class="n">geode_client</span>::<span class="p">{</span><span class="n">Connection</span><span class="p">,</span><span class="w"> </span><span class="n">Error</span><span class="p">,</span><span class="w"> </span><span class="nb">Result</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">async</span><span class="w"> </span><span class="k">fn</span> <span class="nf">create_person</span><span class="p">(</span><span class="n">conn</span>: <span class="kp">&amp;</span><span class="nc">mut</span><span class="w"> </span><span class="n">Connection</span><span class="p">,</span><span class="w"> </span><span class="n">name</span>: <span class="kp">&amp;</span><span class="kt">str</span><span class="p">,</span><span class="w"> </span><span class="n">age</span>: <span class="kt">i32</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">Result</span><span class="o">&lt;</span><span class="p">()</span><span class="o">&gt;</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">// Validate before sending to database </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">name</span><span class="p">.</span><span class="n">is_empty</span><span class="p">()</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">return</span><span class="w"> </span><span class="nb">Err</span><span class="p">(</span><span class="n">Error</span>::<span class="n">validation</span><span class="p">(</span><span class="s">&#34;Name cannot be empty&#34;</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></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">if</span><span class="w"> </span><span class="n">age</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">age</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">150</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">return</span><span class="w"> </span><span class="nb">Err</span><span class="p">(</span><span class="n">Error</span>::<span class="n">validation</span><span class="p">(</span><span class="s">&#34;Age must be 0-150&#34;</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></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="kd">let</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="fm">format!</span><span class="p">(</span><span class="s">&#34;CREATE (p:Person </span><span class="se">{{</span><span class="s">name: &#39;</span><span class="si">{}</span><span class="s">&#39;, age: </span><span class="si">{}</span><span class="se">}}</span><span class="s">)&#34;</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">age</span><span class="p">);</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="n">query</span><span class="p">(</span><span class="o">&amp;</span><span class="n">query</span><span class="p">).</span><span class="k">await</span><span class="o">?</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="nb">Ok</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></span></code></pre></div> <h4 id="log-errors-for-debugging" class="position-relative d-flex align-items-center group"> <span>Log Errors for Debugging</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="log-errors-for-debugging" aria-haspopup="dialog" aria-label="Share link: Log Errors for Debugging"> <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">Enable</span><span class="w"> </span><span class="py">detailed</span><span class="w"> </span><span class="py">error</span><span class="w"> </span><span class="py">logging</span><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">Set</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">server</span><span class="w"> </span><span class="py">configuration</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">logging</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">level</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">debug</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">include_stack_traces</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">error_details</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span></code></pre></div> <h3 id="common-error-scenarios" class="position-relative d-flex align-items-center group"> <span>Common Error Scenarios</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="common-error-scenarios" aria-haspopup="dialog" aria-label="Share link: Common Error Scenarios"> <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="scenario-1-undefined-label" class="position-relative d-flex align-items-center group"> <span>Scenario 1: Undefined Label</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="scenario-1-undefined-label" aria-haspopup="dialog" aria-label="Share link: Scenario 1: Undefined Label"> <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>Error</strong>: <code>42001 - Undefined object: Label 'Person' not found</code></p> <p><strong>Cause</strong>: Querying non-existent label</p> <p><strong>Solution</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">Check</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">label</span><span class="w"> </span><span class="py">exists</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SHOW</span><span class="w"> </span><span class="py">LABELS</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">Create</span><span class="w"> </span><span class="py">label</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">inserting</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="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Alice</span><span class="err">&#39;</span><span class="p">})</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">Then</span><span class="w"> </span><span class="py">retry</span><span class="w"> </span><span class="kd">query</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="scenario-2-unique-constraint-violation" class="position-relative d-flex align-items-center group"> <span>Scenario 2: Unique Constraint Violation</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="scenario-2-unique-constraint-violation" aria-haspopup="dialog" aria-label="Share link: Scenario 2: Unique Constraint Violation"> <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>Error</strong>: <code>23505 - Unique violation: email '[email protected]' already exists</code></p> <p><strong>Cause</strong>: Duplicate value in unique index</p> <p><strong>Solution</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">Option</span><span class="w"> </span><span class="py">1</span><span class="p">:</span><span class="w"> </span><span class="nc">Use</span><span class="w"> </span><span class="py">different</span><span class="w"> </span><span class="py">value</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="nc">email</span><span class="w"> </span><span class="py">protected</span><span class="p">]</span><span class="err">&#39;</span><span class="p">})</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">Option</span><span class="w"> </span><span class="py">2</span><span class="p">:</span><span class="w"> </span><span class="nc">Update</span><span class="w"> </span><span class="py">existing</span><span class="w"> </span><span class="py">record</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="nc">email</span><span class="w"> </span><span class="py">protected</span><span class="p">]</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SET</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">updated_at</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">timestamp</span><span class="p">()</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">Option</span><span class="w"> </span><span class="py">3</span><span class="p">:</span><span class="w"> </span><span class="nc">Use</span><span class="w"> </span><span class="py">MERGE</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">update</span><span class="w"> </span><span class="py">or</span><span class="w"> </span><span class="py">insert</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MERGE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="nc">email</span><span class="w"> </span><span class="py">protected</span><span class="p">]</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ON</span><span class="w"> </span><span class="py">CREATE</span><span class="w"> </span><span class="py">SET</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">created_at</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">timestamp</span><span class="p">()</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ON</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="py">SET</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">updated_at</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">timestamp</span><span class="p">()</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="scenario-3-transaction-conflict" class="position-relative d-flex align-items-center group"> <span>Scenario 3: Transaction Conflict</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="scenario-3-transaction-conflict" aria-haspopup="dialog" aria-label="Share link: Scenario 3: Transaction Conflict"> <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>Error</strong>: <code>ERR_TRANSACTION_CONFLICT - Concurrent modification detected</code></p> <p><strong>Cause</strong>: Two transactions modifying same data</p> <p><strong>Solution</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Implement retry with exponential backoff</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">Client</span><span class="p">,</span> <span class="n">QueryError</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">3141</span><span class="p">)</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">execute_with_retry</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">max_retries</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">attempt</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_retries</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="n">QueryError</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">rollback</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">attempt</span> <span class="o">==</span> <span class="n">max_retries</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span><span class="line"><span class="cl"> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.1</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="n">attempt</span><span class="p">))</span> <span class="c1"># Exponential backoff</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># async with client.connection() as conn:</span> </span></span><span class="line"><span class="cl"><span class="c1"># await execute_with_retry(conn, &#34;MATCH (n) RETURN count(n)&#34;)</span> </span></span></code></pre></div> <h4 id="scenario-4-query-timeout" class="position-relative d-flex align-items-center group"> <span>Scenario 4: Query Timeout</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="scenario-4-query-timeout" aria-haspopup="dialog" aria-label="Share link: Scenario 4: Query Timeout"> <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>Error</strong>: <code>ERR_TIMEOUT - Query exceeded timeout (30000ms)</code></p> <p><strong>Cause</strong>: Query too complex or slow</p> <p><strong>Solution</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">Original</span><span class="w"> </span><span class="p">(</span><span class="py">slow</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="err">*</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="p">,</span><span class="w"> </span><span class="py">m</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">Optimized</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="err">*</span><span class="py">1</span><span class="err">.</span><span class="mf">.3</span><span class="p">]</span><span class="err">-</span><span class="p">(</span><span class="py">m</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">123</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="p">,</span><span class="w"> </span><span class="py">m</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">100</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">Or</span><span class="w"> </span><span class="py">increase</span><span class="w"> </span><span class="py">timeout</span><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">Client</span><span class="w"> </span><span class="py">configuration</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="w"> </span><span class="nc">timeout_ms</span><span class="p">:</span><span class="w"> </span><span class="nc">60000</span><span class="w"> </span></span></span></code></pre></div> <h3 id="related-documentation" class="position-relative d-flex align-items-center group"> <span>Related Documentation</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-documentation" aria-haspopup="dialog" aria-label="Share link: Related Documentation"> <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><strong><a href="/docs/guides/troubleshooting/" >Troubleshooting Guide</a> </strong> - Common issues and solutions</li> <li><strong><a href="/docs/query/performance-tuning/" >Query Performance Tuning</a> </strong> - Optimize queries to avoid errors</li> <li><strong><a href="/docs/transactions/advanced-patterns/" >Advanced Transaction Patterns</a> </strong> - Handle transaction errors</li> <li><strong><a href="/docs/api-reference/" >API Reference</a> </strong> - Complete function and error documentation</li> </ul> <h3 id="summary" class="position-relative d-flex align-items-center group"> <span>Summary</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="summary" aria-haspopup="dialog" aria-label="Share link: Summary"> <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 provides comprehensive error reporting with:</p> <ul> <li><strong>GQLSTATUS Codes</strong>: ISO/IEC SQL-standard 5-character codes for interoperability</li> <li><strong>Internal Error Codes</strong>: Descriptive error names for specific conditions</li> <li><strong>Detailed Messages</strong>: Clear explanations and resolution guidance</li> <li><strong>Structured Errors</strong>: JSON format with context and suggestions</li> </ul> <p>Use error codes to:</p> <ol> <li><strong>Identify issues</strong> - Understand what went wrong</li> <li><strong>Handle gracefully</strong> - Implement retry logic for transient errors</li> <li><strong>Validate input</strong> - Prevent errors before they occur</li> <li><strong>Debug efficiently</strong> - Use error context to locate root causes</li> </ol> <p>Always check error codes and implement appropriate error handling in production applications.</p>