<!-- CANARY: REQ=REQ-GQL-017-STATUS; FEATURE="Docs"; ASPECT=StatusWireMapping; STATUS=TESTED; OWNER=engine; UPDATED=2026-01-16 -->
<h2 id="iso-gql-status-codes-reference" class="position-relative d-flex align-items-center group">
<span>ISO GQL Status Codes Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="iso-gql-status-codes-reference"
aria-haspopup="dialog"
aria-label="Share link: ISO GQL Status Codes Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h2><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 implements the complete ISO/IEC 39075:2024 GQL status code system (GQLSTATUS) for standardized error reporting and handling across all client libraries and protocols.</p>
<h3 id="status-code-format" class="position-relative d-flex align-items-center group">
<span>Status 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="status-code-format"
aria-haspopup="dialog"
aria-label="Share link: Status 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>
<h4 id="gqlstatus-structure" class="position-relative d-flex align-items-center group">
<span>GQLSTATUS 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="gqlstatus-structure"
aria-haspopup="dialog"
aria-label="Share link: GQLSTATUS 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 GQL status codes follow the five-character format defined by the ISO standard:</p>
<p>```
GQLXX
```</p>
<p>Where:</p>
<ul>
<li><strong>GQL</strong> = Fixed prefix identifying GQL status codes</li>
<li><strong>XX</strong> = Two-character code indicating category and specific condition</li>
</ul>
<h4 id="status-code-categories" class="position-relative d-flex align-items-center group">
<span>Status Code Categories</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="status-code-categories"
aria-haspopup="dialog"
aria-label="Share link: Status Code Categories">
<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>```
00 - Success
01 - Warning
02 - No Data
21 - Cardinality Violation
22 - Data Exception
23 - Integrity Constraint Violation
24 - Invalid Transaction State
25 - Invalid Transaction Termination
27 - Transaction Rollback
28 - Invalid Authorization Specification
2E - Invalid Connection
42 - Syntax Error or Access Rule Violation
```</p>
<h3 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>
</h3>
<h4 id="gql00---successful-completion" class="position-relative d-flex align-items-center group">
<span>GQL00 - Successful Completion</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="gql00---successful-completion"
aria-haspopup="dialog"
aria-label="Share link: GQL00 - Successful Completion">
<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>Code</strong>: `GQL00`
<strong>Category</strong>: Success
<strong>Meaning</strong>: Query or operation completed successfully with no errors or warnings</p>
<p><strong>Example</strong>:
```gql
MATCH (p:Person {id: 1}) RETURN p.name
```</p>
<p><strong>Response</strong>:
```json
{
“status”: “GQL00”,
“message”: “Successful completion”,
“rows”: [{“name”: “Alice”}]
}
```</p>
<p><strong>Handling</strong>: No action required, proceed with result processing.</p>
<h3 id="warning-codes" class="position-relative d-flex align-items-center group">
<span>Warning 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="warning-codes"
aria-haspopup="dialog"
aria-label="Share link: Warning 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="gql01---warning" class="position-relative d-flex align-items-center group">
<span>GQL01 - Warning</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="gql01---warning"
aria-haspopup="dialog"
aria-label="Share link: GQL01 - Warning">
<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>Code</strong>: `GQL01`
<strong>Subcodes</strong>: Multiple warning conditions</p>
<p><strong>Common Warnings</strong>:</p>
<h5 id="gql01001---cursor-operation-conflict" class="position-relative d-flex align-items-center group">
<span>GQL01001 - Cursor Operation 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="gql01001---cursor-operation-conflict"
aria-haspopup="dialog"
aria-label="Share link: GQL01001 - Cursor Operation 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>
</h5><p><strong>Meaning</strong>: Cursor operation conflict with concurrent modification</p>
<p><strong>Example Scenario</strong>:
```gql
– Transaction 1
START TRANSACTION
DECLARE cursor1 CURSOR FOR MATCH (p:Person) RETURN p
OPEN cursor1</p>
<p>– Transaction 2 modifies data
CREATE (p:Person {name: ‘NewPerson’})</p>
<p>– Transaction 1 continues
FETCH NEXT FROM cursor1 – Warning: GQL01001
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Re-execute query if data consistency is critical</li>
<li>Accept warning if cursor data can be stale</li>
<li>Consider higher isolation level for transaction</li>
</ul>
<h5 id="gql01002---disconnect-error" class="position-relative d-flex align-items-center group">
<span>GQL01002 - Disconnect Error</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="gql01002---disconnect-error"
aria-haspopup="dialog"
aria-label="Share link: GQL01002 - Disconnect Error">
<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>
</h5><p><strong>Meaning</strong>: Disconnect error occurred but operation completed</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Verify operation completion</li>
<li>Re-establish connection for subsequent operations</li>
<li>Check connection pool health</li>
</ul>
<h3 id="no-data-codes" class="position-relative d-flex align-items-center group">
<span>No Data 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="no-data-codes"
aria-haspopup="dialog"
aria-label="Share link: No Data 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="gql02---no-data" class="position-relative d-flex align-items-center group">
<span>GQL02 - No 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="gql02---no-data"
aria-haspopup="dialog"
aria-label="Share link: GQL02 - No 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><p><strong>Code</strong>: `GQL02`
<strong>Meaning</strong>: Query executed successfully but returned no rows</p>
<p><strong>Example</strong>:
```gql
MATCH (p:Person {email: ’<a
href="mailto:[email protected]"
>[email protected]</a>
’}) RETURN p
```</p>
<p><strong>Response</strong>:
```json
{
“status”: “GQL02”,
“message”: “No data found”,
“rows”: []
}
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Not an error condition</li>
<li>Check query predicates if data was expected</li>
<li>Differentiate from GQL00 (success with data)</li>
</ul>
<h4 id="gql02001---no-additional-data" class="position-relative d-flex align-items-center group">
<span>GQL02001 - No Additional 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="gql02001---no-additional-data"
aria-haspopup="dialog"
aria-label="Share link: GQL02001 - No Additional 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><p><strong>Meaning</strong>: No additional result sets available</p>
<p><strong>Example Scenario</strong>:
```gql
– After consuming all result pages
FETCH NEXT FROM cursor1 – GQL02001
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Normal end-of-results indicator</li>
<li>Close cursor or complete pagination</li>
</ul>
<h3 id="data-exception-codes" class="position-relative d-flex align-items-center group">
<span>Data Exception 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="data-exception-codes"
aria-haspopup="dialog"
aria-label="Share link: Data Exception 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="gql22---data-exception" class="position-relative d-flex align-items-center group">
<span>GQL22 - Data Exception</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="gql22---data-exception"
aria-haspopup="dialog"
aria-label="Share link: GQL22 - Data Exception">
<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>Category</strong>: Data validation and type errors</p>
<h5 id="gql22001---string-data-right-truncation" class="position-relative d-flex align-items-center group">
<span>GQL22001 - String Data Right Truncation</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="gql22001---string-data-right-truncation"
aria-haspopup="dialog"
aria-label="Share link: GQL22001 - String Data Right Truncation">
<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>
</h5><p><strong>Meaning</strong>: String value truncated to fit field length</p>
<p><strong>Example</strong>:
```gql
CREATE (p:Person {name: ‘VeryLongNameThatExceedsLimit…’})
– If name field has max length of 50 characters
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Validate input length before insertion</li>
<li>Increase field size if legitimate use case</li>
<li>Truncate data explicitly in application</li>
</ul>
<h5 id="gql22003---numeric-value-out-of-range" class="position-relative d-flex align-items-center group">
<span>GQL22003 - Numeric Value Out of Range</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="gql22003---numeric-value-out-of-range"
aria-haspopup="dialog"
aria-label="Share link: GQL22003 - Numeric Value Out of Range">
<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>
</h5><p><strong>Meaning</strong>: Numeric value exceeds data type bounds</p>
<p><strong>Example</strong>:
```gql
CREATE (p:Product {quantity: 9999999999999999})
– If quantity is INT32
```</p>
<p><strong>Handling</strong>:
```go
// Go example
if quantity > math.MaxInt32 {
return fmt.Errorf(“quantity exceeds maximum: %d”, math.MaxInt32)
}
```</p>
<h5 id="gql22007---invalid-datetime-format" class="position-relative d-flex align-items-center group">
<span>GQL22007 - Invalid Datetime 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="gql22007---invalid-datetime-format"
aria-haspopup="dialog"
aria-label="Share link: GQL22007 - Invalid Datetime 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>
</h5><p><strong>Meaning</strong>: Datetime string doesn’t match expected format</p>
<p><strong>Example</strong>:
```gql
CREATE (e:Event {timestamp: ‘2024-13-45T25:99:99’}) – Invalid
```</p>
<p><strong>Valid Formats</strong>:
```gql
– ISO 8601 formats
‘2024-01-15’ – Date
‘14:30:00’ – Time
‘2024-01-15T14:30:00’ – DateTime
‘2024-01-15T14:30:00Z’ – DateTime with UTC
‘2024-01-15T14:30:00-05:00’ – DateTime with timezone
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Validate datetime strings before insertion</li>
<li>Use ISO 8601 format consistently</li>
<li>Consider using datetime functions</li>
</ul>
<h5 id="gql22008---datetime-field-overflow" class="position-relative d-flex align-items-center group">
<span>GQL22008 - Datetime Field Overflow</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="gql22008---datetime-field-overflow"
aria-haspopup="dialog"
aria-label="Share link: GQL22008 - Datetime Field Overflow">
<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>
</h5><p><strong>Meaning</strong>: Datetime calculation resulted in overflow</p>
<p><strong>Example</strong>:
```gql
RETURN datetime(‘2024-01-01’) + duration(‘P99999Y’)
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Validate duration values before arithmetic</li>
<li>Check result bounds after calculations</li>
</ul>
<h5 id="gql22012---division-by-zero" class="position-relative d-flex align-items-center group">
<span>GQL22012 - Division by Zero</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="gql22012---division-by-zero"
aria-haspopup="dialog"
aria-label="Share link: GQL22012 - Division by Zero">
<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>
</h5><p><strong>Meaning</strong>: Attempted division or modulo by zero</p>
<p><strong>Example</strong>:
```gql
MATCH (p:Product)
RETURN p.price, p.price / p.quantity AS unit_price
– If quantity = 0
```</p>
<p><strong>Handling</strong>:
```gql
– Add guard clause
MATCH (p:Product)
WHERE p.quantity > 0
RETURN p.price, p.price / p.quantity AS unit_price
```</p>
<p>```python</p>
<h2 id="python-example" class="position-relative d-flex align-items-center group">
<span>Python example</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python-example"
aria-haspopup="dialog"
aria-label="Share link: Python example">
<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>
</h2><p>unit_price = price / quantity if quantity != 0 else None
```</p>
<h5 id="gql22018---invalid-character-value-for-cast" class="position-relative d-flex align-items-center group">
<span>GQL22018 - Invalid Character Value for Cast</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="gql22018---invalid-character-value-for-cast"
aria-haspopup="dialog"
aria-label="Share link: GQL22018 - Invalid Character Value for Cast">
<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>
</h5><p><strong>Meaning</strong>: String cannot be cast to target type</p>
<p><strong>Example</strong>:
```gql
RETURN toInteger(’not_a_number’) – GQL22018
```</p>
<p><strong>Handling</strong>:
```gql
– Validate before casting
RETURN CASE
WHEN value =~ ‘^[0-9]+$’ THEN toInteger(value)
ELSE NULL
END
```</p>
<h5 id="gql22023---invalid-parameter-value" class="position-relative d-flex align-items-center group">
<span>GQL22023 - Invalid Parameter Value</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="gql22023---invalid-parameter-value"
aria-haspopup="dialog"
aria-label="Share link: GQL22023 - Invalid Parameter Value">
<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>
</h5><p><strong>Meaning</strong>: Parameter value invalid for operation</p>
<p><strong>Example</strong>:
```gql
MATCH (p:Person)
WHERE p.age > $age – $age = ’twenty’ (string instead of number)
RETURN p
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Type-check parameters before query execution</li>
<li>Use strongly-typed parameter binding</li>
<li>Validate input at application boundary</li>
</ul>
<h3 id="integrity-constraint-violations" class="position-relative d-flex align-items-center group">
<span>Integrity Constraint Violations</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-violations"
aria-haspopup="dialog"
aria-label="Share link: Integrity Constraint Violations">
<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="gql23---integrity-constraint-violation" class="position-relative d-flex align-items-center group">
<span>GQL23 - Integrity 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="gql23---integrity-constraint-violation"
aria-haspopup="dialog"
aria-label="Share link: GQL23 - Integrity 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>
<h5 id="gql23000---integrity-constraint-violation-general" class="position-relative d-flex align-items-center group">
<span>GQL23000 - Integrity Constraint Violation (General)</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="gql23000---integrity-constraint-violation-general"
aria-haspopup="dialog"
aria-label="Share link: GQL23000 - Integrity Constraint Violation (General)">
<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>
</h5><p><strong>Meaning</strong>: Unspecified integrity constraint violated</p>
<p><strong>Example</strong>:
```gql
CREATE (p:Person {id: 1, email: ‘<a
href="mailto:[email protected]"
>[email protected]</a>
’})
CREATE (p:Person {id: 1, email: ‘<a
href="mailto:[email protected]"
>[email protected]</a>
’})
– If id has UNIQUE constraint
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Check constraint definitions</li>
<li>Validate data before insertion</li>
<li>Handle duplicate key scenarios</li>
</ul>
<h5 id="gql23001---restrict-violation" class="position-relative d-flex align-items-center group">
<span>GQL23001 - Restrict 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="gql23001---restrict-violation"
aria-haspopup="dialog"
aria-label="Share link: GQL23001 - Restrict 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>
</h5><p><strong>Meaning</strong>: Foreign key constraint prevents deletion</p>
<p><strong>Example</strong>:
```gql
– Person has relationships to Orders
DELETE (p:Person {id: 1})
– GQL23001 if ON DELETE RESTRICT is enforced
```</p>
<p><strong>Handling</strong>:
```gql
– Use DETACH DELETE to remove relationships
DETACH DELETE (p:Person {id: 1})</p>
<p>– Or delete relationships first
MATCH (p:Person {id: 1})-[r]-()
DELETE r, p
```</p>
<h5 id="gql23505---unique-violation" class="position-relative d-flex align-items-center group">
<span>GQL23505 - Unique 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="gql23505---unique-violation"
aria-haspopup="dialog"
aria-label="Share link: GQL23505 - Unique 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>
</h5><p><strong>Meaning</strong>: Unique constraint violated</p>
<p><strong>Example</strong>:
```gql
CREATE (u:User {email: ‘<a
href="mailto:[email protected]"
>[email protected]</a>
’})
CREATE (u:User {email: ‘<a
href="mailto:[email protected]"
>[email protected]</a>
’}) – GQL23505
```</p>
<p><strong>Handling</strong>:
```gql
– Use MERGE for upsert semantics
MERGE (u:User {email: ‘<a
href="mailto:[email protected]"
>[email protected]</a>
’})
ON CREATE SET u.created = datetime()
ON MATCH SET u.accessed = datetime()
```</p>
<p>```python</p>
<h2 id="python-error-handling" class="position-relative d-flex align-items-center group">
<span>Python error handling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python-error-handling"
aria-haspopup="dialog"
aria-label="Share link: Python error handling">
<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>
</h2><p>from geode_client.exceptions import ConstraintViolationError</p>
<p>try:
await conn.execute(
“CREATE (u:User {email: $email})”,
{“email”: email}
)
except ConstraintViolationError as e:
if e.status_code == “GQL23505”:
# Handle duplicate email
logger.warning(f"Email already exists: {email}")
```</p>
<h5 id="gql23514---check-constraint-violation" class="position-relative d-flex align-items-center group">
<span>GQL23514 - Check 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="gql23514---check-constraint-violation"
aria-haspopup="dialog"
aria-label="Share link: GQL23514 - Check 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>
</h5><p><strong>Meaning</strong>: CHECK constraint condition not satisfied</p>
<p><strong>Example</strong>:
```gql
– Assuming CHECK constraint: age >= 0 AND age <= 150
CREATE (p:Person {name: ‘Alice’, age: 200}) – GQL23514
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Validate data against constraint rules before insertion</li>
<li>Review constraint definitions for reasonableness</li>
<li>Provide clear error messages to users</li>
</ul>
<h3 id="transaction-state-errors" class="position-relative d-flex align-items-center group">
<span>Transaction State 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-state-errors"
aria-haspopup="dialog"
aria-label="Share link: Transaction State 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>
</h3>
<h4 id="gql24---invalid-transaction-state" class="position-relative d-flex align-items-center group">
<span>GQL24 - Invalid Transaction State</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="gql24---invalid-transaction-state"
aria-haspopup="dialog"
aria-label="Share link: GQL24 - Invalid Transaction State">
<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>
<h5 id="gql24000---invalid-transaction-state-general" class="position-relative d-flex align-items-center group">
<span>GQL24000 - Invalid Transaction State (General)</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="gql24000---invalid-transaction-state-general"
aria-haspopup="dialog"
aria-label="Share link: GQL24000 - Invalid Transaction State (General)">
<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>
</h5><p><strong>Meaning</strong>: Operation not valid in current transaction state</p>
<p><strong>Example</strong>:
```gql
COMMIT – No active transaction
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Track transaction state in application</li>
<li>Always pair BEGIN with COMMIT/ROLLBACK</li>
<li>Use transaction context managers</li>
</ul>
<p>```python</p>
<h2 id="python---safe-transaction-handling" class="position-relative d-flex align-items-center group">
<span>Python - Safe transaction handling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python---safe-transaction-handling"
aria-haspopup="dialog"
aria-label="Share link: Python - Safe transaction handling">
<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>
</h2><p>async with db.connection() as tx:
await tx.begin()
await tx.execute(“CREATE (p:Person {name: ‘Alice’})”)
# Automatic commit on success, rollback on exception
```</p>
<h5 id="gql25000---invalid-transaction-termination" class="position-relative d-flex align-items-center group">
<span>GQL25000 - Invalid Transaction Termination</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="gql25000---invalid-transaction-termination"
aria-haspopup="dialog"
aria-label="Share link: GQL25000 - Invalid Transaction Termination">
<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>
</h5><p><strong>Meaning</strong>: Cannot commit or rollback in current state</p>
<p><strong>Example</strong>:
```gql
START TRANSACTION
– Connection lost
COMMIT – GQL25000
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Implement connection retry logic</li>
<li>Re-establish transaction after connection recovery</li>
<li>Use savepoints for partial rollback</li>
</ul>
<h4 id="gql27---transaction-rollback" class="position-relative d-flex align-items-center group">
<span>GQL27 - Transaction Rollback</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="gql27---transaction-rollback"
aria-haspopup="dialog"
aria-label="Share link: GQL27 - Transaction Rollback">
<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>
<h5 id="gql27000---transaction-rollback-general" class="position-relative d-flex align-items-center group">
<span>GQL27000 - Transaction Rollback (General)</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="gql27000---transaction-rollback-general"
aria-haspopup="dialog"
aria-label="Share link: GQL27000 - Transaction Rollback (General)">
<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>
</h5><p><strong>Meaning</strong>: Transaction rolled back due to error or deadlock</p>
<p><strong>Example</strong>:
```gql
START TRANSACTION
CREATE (p:Person {id: 1})
– Deadlock detected with concurrent transaction
– GQL27000 - Transaction rolled back
```</p>
<p><strong>Handling</strong>:
```python</p>
<h2 id="python---retry-on-deadlock" class="position-relative d-flex align-items-center group">
<span>Python - Retry on deadlock</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python---retry-on-deadlock"
aria-haspopup="dialog"
aria-label="Share link: Python - Retry on deadlock">
<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>
</h2><p>max_retries = 3
for attempt in range(max_retries):
try:
async with db.connection() as tx:
await tx.begin()
await tx.execute(query, params)
break # Success
except TransactionRollbackError as e:
if “deadlock” in str(e).lower() and attempt < max_retries - 1:
await asyncio.sleep(0.1 * (2 ** attempt)) # Exponential backoff
else:
raise
```</p>
<h3 id="syntax-and-access-errors" class="position-relative d-flex align-items-center group">
<span>Syntax and Access 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="syntax-and-access-errors"
aria-haspopup="dialog"
aria-label="Share link: Syntax and Access 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>
</h3>
<h4 id="gql42---syntax-error-or-access-rule-violation" class="position-relative d-flex align-items-center group">
<span>GQL42 - Syntax Error or Access Rule 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="gql42---syntax-error-or-access-rule-violation"
aria-haspopup="dialog"
aria-label="Share link: GQL42 - Syntax Error or Access Rule 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>
<h5 id="gql42000---syntax-error-or-access-violation-general" class="position-relative d-flex align-items-center group">
<span>GQL42000 - Syntax Error or Access Violation (General)</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="gql42000---syntax-error-or-access-violation-general"
aria-haspopup="dialog"
aria-label="Share link: GQL42000 - Syntax Error or Access Violation (General)">
<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>
</h5><p><strong>Meaning</strong>: Query syntax error or insufficient privileges</p>
<p><strong>Example</strong>:
```gql
MATCH (p:Person WHERE p.age > 25 RETURN p – Missing )
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Validate query syntax before execution</li>
<li>Use query builder libraries to prevent syntax errors</li>
<li>Check error message for specific syntax issue</li>
</ul>
<h5 id="gql42501---insufficient-privilege" class="position-relative d-flex align-items-center group">
<span>GQL42501 - Insufficient Privilege</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="gql42501---insufficient-privilege"
aria-haspopup="dialog"
aria-label="Share link: GQL42501 - Insufficient Privilege">
<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>
</h5><p><strong>Meaning</strong>: User lacks required permissions</p>
<p><strong>Example</strong>:
```gql
– User without CREATE permission
CREATE (p:Person {name: ‘Alice’}) – GQL42501
```</p>
<p><strong>Handling</strong>:
```python
from geode_client.exceptions import InsufficientPrivilegeError</p>
<p>try:
await conn.execute(“CREATE (p:Person {name: ‘Alice’})”)
except InsufficientPrivilegeError as e:
logger.error(f"Permission denied: {e.message}")
# Request access or use different credentials
```</p>
<h5 id="gql42601---invalid-grant-operation" class="position-relative d-flex align-items-center group">
<span>GQL42601 - Invalid Grant Operation</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="gql42601---invalid-grant-operation"
aria-haspopup="dialog"
aria-label="Share link: GQL42601 - Invalid Grant Operation">
<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>
</h5><p><strong>Meaning</strong>: Cannot grant specified privilege</p>
<p><strong>Example</strong>:
```gql
GRANT CREATE ON GRAPH production TO user1
– If current user cannot grant this privilege
```</p>
<h5 id="gql42704---undefined-database-object" class="position-relative d-flex align-items-center group">
<span>GQL42704 - Undefined Database Object</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="gql42704---undefined-database-object"
aria-haspopup="dialog"
aria-label="Share link: GQL42704 - Undefined Database Object">
<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>
</h5><p><strong>Meaning</strong>: Referenced object does not exist</p>
<p><strong>Example</strong>:
```gql
USE GRAPH nonexistent_graph – GQL42704
```</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Verify database object names before use</li>
<li>Create objects if they don’t exist</li>
<li>Handle missing objects gracefully</li>
</ul>
<h3 id="connection-errors" class="position-relative d-flex align-items-center group">
<span>Connection 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="connection-errors"
aria-haspopup="dialog"
aria-label="Share link: Connection 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>
</h3>
<h4 id="gql2e---invalid-connection" class="position-relative d-flex align-items-center group">
<span>GQL2E - Invalid Connection</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="gql2e---invalid-connection"
aria-haspopup="dialog"
aria-label="Share link: GQL2E - Invalid Connection">
<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>
<h5 id="gql2e000---connection-exception-general" class="position-relative d-flex align-items-center group">
<span>GQL2E000 - Connection Exception (General)</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="gql2e000---connection-exception-general"
aria-haspopup="dialog"
aria-label="Share link: GQL2E000 - Connection Exception (General)">
<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>
</h5><p><strong>Meaning</strong>: Connection-level error occurred</p>
<p><strong>Example Scenarios</strong>:</p>
<ul>
<li>Network timeout</li>
<li>Connection pool exhausted</li>
<li>Server unreachable</li>
</ul>
<p><strong>Handling</strong>:
```go
// Go - Connection retry with backoff
func connectWithRetry(url string, maxRetries int) (*gql.DB, error) {
var db *gql.DB
var err error</p>
<pre><code>for i := 0; i < maxRetries; i++ {
db, err = gql.Open(url)
if err == nil {
return db, nil
}
if errors.IsConnectionError(err) {
backoff := time.Duration(100*math.Pow(2, float64(i))) * time.Millisecond
time.Sleep(backoff)
continue
}
return nil, err // Non-retryable error
}
return nil, fmt.Errorf("failed after %d retries: %w", maxRetries, err)
</code></pre>
<p>}
```</p>
<h5 id="gql2e001---connection-does-not-exist" class="position-relative d-flex align-items-center group">
<span>GQL2E001 - Connection Does Not Exist</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="gql2e001---connection-does-not-exist"
aria-haspopup="dialog"
aria-label="Share link: GQL2E001 - Connection Does Not Exist">
<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>
</h5><p><strong>Meaning</strong>: Connection closed or never established</p>
<p><strong>Handling</strong>:</p>
<ul>
<li>Check connection status before operations</li>
<li>Implement connection health checks</li>
<li>Use connection pooling for reliability</li>
</ul>
<p>```python</p>
<h2 id="python---connection-health-check" class="position-relative d-flex align-items-center group">
<span>Python - Connection health check</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python---connection-health-check"
aria-haspopup="dialog"
aria-label="Share link: Python - Connection health check">
<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>
</h2><p>async def ensure_connection(db):
try:
async with db.connection() as conn:
await conn.ping()
except ConnectionError:
# Re-establish connection
await db.reconnect()
```</p>
<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="1-categorize-errors-by-severity" class="position-relative d-flex align-items-center group">
<span>1. Categorize Errors by Severity</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="1-categorize-errors-by-severity"
aria-haspopup="dialog"
aria-label="Share link: 1. Categorize Errors by Severity">
<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>```python
from geode_client.exceptions import GeodeError</p>
<p>def handle_error(e: GeodeError):
if e.status_code.startswith(“GQL00”):
# Success - no handling needed
pass
elif e.status_code.startswith(“GQL01”):
# Warning - log and continue
logger.warning(f"Warning: {e.message}")
elif e.status_code.startswith(“GQL02”):
# No data - expected condition
return []
elif e.status_code.startswith(“GQL22”):
# Data exception - validation error
logger.error(f"Invalid data: {e.message}")
raise ValueError(e.message)
elif e.status_code.startswith(“GQL23”):
# Constraint violation
logger.error(f"Constraint violated: {e.message}")
raise IntegrityError(e.message)
elif e.status_code.startswith(“GQL27”):
# Transaction rollback - retry
logger.info(f"Transaction rolled back: {e.message}")
return “RETRY”
elif e.status_code.startswith(“GQL42”):
# Syntax or permission error
logger.error(f"Query error: {e.message}")
raise SyntaxError(e.message)
else:
# Unknown error
logger.exception(f"Unexpected error: {e.message}")
raise
```</p>
<h4 id="2-implement-retry-logic-for-transient-errors" class="position-relative d-flex align-items-center group">
<span>2. Implement Retry Logic for 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="2-implement-retry-logic-for-transient-errors"
aria-haspopup="dialog"
aria-label="Share link: 2. Implement Retry Logic for 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><p>```go
// Go - Retry wrapper
func executeWithRetry(ctx context.Context, db *gql.DB, query string, params map[string]interface{}, maxRetries int) (*gql.Page, error) {
var page *gql.Page
var err error</p>
<pre><code>for attempt := 0; attempt < maxRetries; attempt++ {
conn, err := db.Connect(ctx)
if err != nil {
if errors.IsConnectionError(err) && attempt < maxRetries-1 {
backoff := time.Duration(100 * math.Pow(2, float64(attempt))) * time.Millisecond
time.Sleep(backoff)
continue
}
return nil, err
}
defer conn.Close()
page, _, err = conn.Query(ctx, query, params, 100)
if err == nil {
return page, nil
}
if errors.IsTransactionRollback(err) && attempt < maxRetries-1 {
backoff := time.Duration(50 * math.Pow(2, float64(attempt))) * time.Millisecond
time.Sleep(backoff)
continue
}
return nil, err
}
return nil, fmt.Errorf("failed after %d attempts: %w", maxRetries, err)
</code></pre>
<p>}
```</p>
<h4 id="3-log-errors-with-context" class="position-relative d-flex align-items-center group">
<span>3. Log Errors with Context</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="3-log-errors-with-context"
aria-haspopup="dialog"
aria-label="Share link: 3. Log Errors with Context">
<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>```python
import logging
import json</p>
<p>logger = logging.getLogger(<strong>name</strong>)</p>
<p>async def execute_query_with_logging(conn, query, params):
try:
result = await conn.query(query, params)
return result
except GeodeError as e:
logger.error(
“Query execution failed”,
extra={
“status_code”: e.status_code,
“message”: e.message,
“query”: query,
“params”: json.dumps(params),
“stack_trace”: str(e)
}
)
raise
```</p>
<h4 id="4-validate-input-before-execution" class="position-relative d-flex align-items-center group">
<span>4. Validate Input Before Execution</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="4-validate-input-before-execution"
aria-haspopup="dialog"
aria-label="Share link: 4. Validate Input Before Execution">
<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>```rust
use geode_client::{Client, Value};</p>
<p>fn validate_person(name: &str, age: i32, email: &str) -> Result<(), String> {
if name.is_empty() {
return Err(“Name cannot be empty”.to_string());
}
if age < 0 || age > 150 {
return Err(format!(“Invalid age: {}”, age));
}
if !email.contains(’@’) {
return Err(format!(“Invalid email: {}”, email));
}
Ok(())
}</p>
<p>async fn create_person(
client: &Client,
name: &str,
age: i32,
email: &str
) -> Result<(), Box<dyn std::error::Error>> {
// Validate before execution
validate_person(name, age, email)?;</p>
<pre><code>let mut conn = client.connect().await?;
conn.execute(
"CREATE (p:Person {name: $name, age: $age, email: $email})",
vec![
("name", Value::from(name)),
("age", Value::from(age)),
("email", Value::from(email)),
]
).await?;
Ok(())
</code></pre>
<p>}
```</p>
<h3 id="status-code-quick-reference" class="position-relative d-flex align-items-center group">
<span>Status Code Quick Reference</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="status-code-quick-reference"
aria-haspopup="dialog"
aria-label="Share link: Status Code Quick Reference">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="by-category" class="position-relative d-flex align-items-center group">
<span>By Category</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="by-category"
aria-haspopup="dialog"
aria-label="Share link: By Category">
<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>Category</th>
<th>Code Range</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Success</td>
<td>GQL00</td>
<td>Successful completion</td>
</tr>
<tr>
<td>Warning</td>
<td>GQL01</td>
<td>Warning conditions</td>
</tr>
<tr>
<td>No Data</td>
<td>GQL02</td>
<td>No data found</td>
</tr>
<tr>
<td>Data Exception</td>
<td>GQL22</td>
<td>Data validation errors</td>
</tr>
<tr>
<td>Constraint Violation</td>
<td>GQL23</td>
<td>Integrity constraints</td>
</tr>
<tr>
<td>Transaction State</td>
<td>GQL24</td>
<td>Invalid transaction state</td>
</tr>
<tr>
<td>Transaction Termination</td>
<td>GQL25</td>
<td>Cannot commit/rollback</td>
</tr>
<tr>
<td>Rollback</td>
<td>GQL27</td>
<td>Transaction rolled back</td>
</tr>
<tr>
<td>Syntax/Access</td>
<td>GQL42</td>
<td>Syntax or permission errors</td>
</tr>
<tr>
<td>Connection</td>
<td>GQL2E</td>
<td>Connection errors</td>
</tr>
</tbody>
</table>
<h4 id="common-codes" class="position-relative d-flex align-items-center group">
<span>Common 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="common-codes"
aria-haspopup="dialog"
aria-label="Share link: Common 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>Meaning</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>GQL00</td>
<td>Success</td>
<td>Continue processing</td>
</tr>
<tr>
<td>GQL01</td>
<td>Warning</td>
<td>Log and continue</td>
</tr>
<tr>
<td>GQL02</td>
<td>No data</td>
<td>Handle empty result</td>
</tr>
<tr>
<td>GQL22003</td>
<td>Numeric overflow</td>
<td>Validate input range</td>
</tr>
<tr>
<td>GQL22007</td>
<td>Invalid datetime</td>
<td>Check format</td>
</tr>
<tr>
<td>GQL22012</td>
<td>Division by zero</td>
<td>Add guard clause</td>
</tr>
<tr>
<td>GQL23505</td>
<td>Unique violation</td>
<td>Use MERGE or handle duplicate</td>
</tr>
<tr>
<td>GQL27000</td>
<td>Deadlock</td>
<td>Retry with backoff</td>
</tr>
<tr>
<td>GQL42000</td>
<td>Syntax error</td>
<td>Fix query syntax</td>
</tr>
<tr>
<td>GQL42501</td>
<td>Insufficient privilege</td>
<td>Check permissions</td>
</tr>
<tr>
<td>GQL2E000</td>
<td>Connection error</td>
<td>Retry connection</td>
</tr>
</tbody>
</table>
<h3 id="troubleshooting-guide" class="position-relative d-flex align-items-center group">
<span>Troubleshooting Guide</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="troubleshooting-guide"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting Guide">
<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="connection-issues" class="position-relative d-flex align-items-center group">
<span>Connection Issues</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="connection-issues"
aria-haspopup="dialog"
aria-label="Share link: Connection Issues">
<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>Problem</strong>: GQL2E000 - Connection Exception</p>
<p><strong>Diagnostic Steps</strong>:</p>
<ol>
<li>Verify server is running: `geode status`</li>
<li>Check network connectivity: `ping geode-server`</li>
<li>Verify QUIC port (3141) is accessible</li>
<li>Check connection pool status</li>
<li>Review server logs for errors</li>
</ol>
<p><strong>Solutions</strong>:</p>
<ul>
<li>Restart Geode server</li>
<li>Check firewall rules for UDP port 3141</li>
<li>Increase connection pool size</li>
<li>Implement connection retry logic</li>
</ul>
<h4 id="query-performance" class="position-relative d-flex align-items-center group">
<span>Query Performance</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="query-performance"
aria-haspopup="dialog"
aria-label="Share link: Query Performance">
<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>Problem</strong>: Slow queries or timeouts</p>
<p><strong>Diagnostic Steps</strong>:</p>
<ol>
<li>Use EXPLAIN to analyze query plan</li>
<li>Check index usage</li>
<li>Review query complexity</li>
<li>Monitor server resources</li>
</ol>
<p><strong>Solutions</strong>:
```gql
– Add appropriate indexes
CREATE INDEX ON :Person(email)</p>
<p>– Optimize query with LIMIT
MATCH (p:Person)
WHERE p.age > 25
RETURN p.name, p.email
ORDER BY p.name
LIMIT 100 – Add limit for large result sets</p>
<p>– Use PROFILE to measure performance
PROFILE MATCH (p:Person)-[:KNOWS]->(f)
RETURN p.name, count(f) AS friend_count
```</p>
<h4 id="transaction-deadlocks" class="position-relative d-flex align-items-center group">
<span>Transaction Deadlocks</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-deadlocks"
aria-haspopup="dialog"
aria-label="Share link: Transaction Deadlocks">
<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>Problem</strong>: GQL27000 - Transaction Rollback (Deadlock)</p>
<p><strong>Prevention</strong>:</p>
<ul>
<li>Access resources in consistent order</li>
<li>Keep transactions short</li>
<li>Use appropriate isolation levels</li>
<li>Implement retry logic with exponential backoff</li>
</ul>
<p><strong>Example</strong>:
```python
import asyncio
from geode_client import Client, QueryError</p>
<p>async def transfer_with_retry(from_id, to_id, amount, max_retries=3):
client = Client(host=“localhost”, port=3141)</p>
<pre><code>for attempt in range(max_retries):
async with client.connection() as conn:
try:
await conn.begin()
if from_id < to_id:
await conn.query("MATCH (a:Account {id: $id}) RETURN a", {"id": from_id})
await conn.query("MATCH (a:Account {id: $id}) RETURN a", {"id": to_id})
else:
await conn.query("MATCH (a:Account {id: $id}) RETURN a", {"id": to_id})
await conn.query("MATCH (a:Account {id: $id}) RETURN a", {"id": from_id})
await conn.execute(
"MATCH (a:Account {id: $id}) SET a.balance = a.balance - $amount",
{"id": from_id, "amount": amount},
)
await conn.execute(
"MATCH (a:Account {id: $id}) SET a.balance = a.balance + $amount",
{"id": to_id, "amount": amount},
)
await conn.commit()
return
except QueryError as e:
await conn.rollback()
if not str(e).startswith("40502:"):
raise
if attempt < max_retries - 1:
await asyncio.sleep(0.1 * (2 ** attempt))
else:
raise
</code></pre>
<p>```</p>
<h4 id="data-validation-errors" class="position-relative d-flex align-items-center group">
<span>Data Validation 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="data-validation-errors"
aria-haspopup="dialog"
aria-label="Share link: Data Validation 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><p><strong>Problem</strong>: GQL22* - Data Exception</p>
<p><strong>Prevention</strong>:</p>
<ul>
<li>Validate all inputs before database operations</li>
<li>Use type-safe parameter binding</li>
<li>Define appropriate constraints</li>
<li>Implement application-level validation</li>
</ul>
<p><strong>Example Validation Framework</strong>:
```python
from pydantic import BaseModel, EmailStr, Field
from datetime import datetime</p>
<p>class PersonCreate(BaseModel):
name: str = Field(…, min_length=1, max_length=100)
age: int = Field(…, ge=0, le=150)
email: EmailStr
birth_date: datetime</p>
<pre><code>class Config:
json_schema_extra = {
"example": {
"name": "Alice Smith",
"age": 30,
"email": "[email protected]",
"birth_date": "1994-01-15T00:00:00Z"
}
}
</code></pre>
<p>async def create_person(person: PersonCreate):
# Pydantic validation happens automatically
# Safe to execute query with validated data
async with db.connection() as conn:
await conn.execute(
"""
CREATE (p:Person {
name: $name,
age: $age,
email: $email,
birth_date: $birth_date
})
“”",
person.dict()
)
```</p>
<h3 id="client-library-integration" class="position-relative d-flex align-items-center group">
<span>Client Library Integration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="client-library-integration"
aria-haspopup="dialog"
aria-label="Share link: Client Library Integration">
<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="go-client" class="position-relative d-flex align-items-center group">
<span>Go Client</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="go-client"
aria-haspopup="dialog"
aria-label="Share link: Go Client">
<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>```go
import (
“gitlab.com/devnw/codepros/geode-client-go/errors”
)</p>
<p>// Error type checking
if errors.IsConstraintViolation(err) {
// Handle constraint violation
}
if errors.IsConnectionError(err) {
// Handle connection error
}</p>
<p>// Status code access
if gqlErr, ok := err.(errors.GQLError); ok {
statusCode := gqlErr.StatusCode() // e.g., “GQL23505”
message := gqlErr.Message()
}
```</p>
<h4 id="python-client" class="position-relative d-flex align-items-center group">
<span>Python Client</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="python-client"
aria-haspopup="dialog"
aria-label="Share link: Python Client">
<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>```python
from geode_client.exceptions import (
GeodeError,
ConstraintViolationError,
ConnectionError,
TransactionRollbackError
)</p>
<p>try:
await conn.execute(query, params)
except ConstraintViolationError as e:
print(f"Constraint violation: {e.status_code} - {e.message}")
except TransactionRollbackError as e:
print(f"Transaction rolled back: {e.status_code}")
except ConnectionError as e:
print(f"Connection error: {e.status_code}")
except GeodeError as e:
print(f"Geode error: {e.status_code} - {e.message}")
```</p>
<h4 id="rust-client" class="position-relative d-flex align-items-center group">
<span>Rust Client</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="rust-client"
aria-haspopup="dialog"
aria-label="Share link: Rust Client">
<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>```rust
use geode_client::{Error, ErrorKind};</p>
<p>match conn.execute(query, params).await {
Ok(_) => println!(“Success”),
Err(Error::ConstraintViolation { code, message }) => {
eprintln!(“Constraint violation {}: {}”, code, message);
}
Err(Error::Connection(msg)) => {
eprintln!(“Connection error: {}”, msg);
}
Err(Error::TransactionRollback { code }) => {
eprintln!(“Transaction rolled back: {}”, code);
}
Err(e) => eprintln!(“Error: {:?}”, e),
}
```</p>
<h3 id="next-steps" class="position-relative d-flex align-items-center group">
<span>Next Steps</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="next-steps"
aria-haspopup="dialog"
aria-label="Share link: Next Steps">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ol>
<li><strong>Implement Error Handling</strong> - Add proper error handling to all database operations</li>
<li><strong>Add Retry Logic</strong> - Implement retries for transient errors (deadlocks, connection issues)</li>
<li><strong>Validate Inputs</strong> - Validate all data before database operations</li>
<li><strong>Monitor Errors</strong> - Track error rates and types in production</li>
<li><strong>Review Logs</strong> - Regularly review error logs for patterns</li>
<li><strong>Test Error Scenarios</strong> - Include error cases in test suite</li>
</ol>
<p><strong>Related Documentation</strong>:</p>
<ul>
<li><a
href="/docs/transactions/advanced-patterns"
>Transaction Patterns</a>
</li>
<li><a
href="/docs/client-libraries/client-comparison#error-handling-strategies"
>Client Error Handling</a>
</li>
<li><a
href="/docs/guides/troubleshooting"
>Troubleshooting Guide</a>
</li>
<li><a
href="/docs/gql/conformance-profile"
>GQL Compliance</a>
</li>
</ul>
<hr>
<p><em>Last Updated: January 2026</em>
<em>Based on: ISO/IEC 39075:2024 GQL Standard</em>
<em>Status: Production-ready - 100% GQL compliance</em></p>
ISO GQL Status Codes Reference
Complete reference for ISO GQL status codes and error handling in Geode, including error categories, handling strategies, and troubleshooting guide