From my documentation (related issues): - Issue #1 (CAST+JOINs hang): Server protocol + no timeout in fetchMoreData() - Issue #2 (Functions+JOINs hang): Same as #1 - Issue #4 (COUNT+JOINs panic): No bounds checking on slot_position in Next() line 248 - Issue #5 (Pagination leaks): No timeout on empty results - Issue #7 (Invalid FK hang): Same as #5 Recommendations **Priority 2: Add Timeout to fetchMoreData()** (Prevents ALL hangs) - Add SetReadDeadline(30s) before ReadMessage() - Handle timeout errors gracefully (return false, not panic) - Issue #4 (COUNT+JOINs panic): No bounds checking on slot_position in Next() line 248 **Priority 4: Add Bounds Checking** (Fixes Issues #3, #4) - Check slot_position < len(vals) in Next() - Check offset+size <= len(buffer) in GetListItem() - sql.go:247-254 - Add bounds checking in Next() - mod.go - Add maxRowsPerFetch field to Connection struct - url.go - Parse maxRows from DSN
From my documentation (related issues):
Recommendations
Priority 2: Add Timeout to fetchMoreData() (Prevents ALL hangs)
Add SetReadDeadline(30s) before ReadMessage()
Handle timeout errors gracefully (return false, not panic)
Issue CAST / JOINS / Functions / Empty Dataset combinations hangs and Panics: Timeouts and Outbounds #4 (COUNT+JOINs panic): No bounds checking on slot_position in Next() line 248
Priority 4: Add Bounds Checking (Fixes Issues Fix GUID Handling #3, CAST / JOINS / Functions / Empty Dataset combinations hangs and Panics: Timeouts and Outbounds #4)
Check slot_position < len(vals) in Next()
Check offset+size <= len(buffer) in GetListItem()
sql.go:247-254 - Add bounds checking in Next()
mod.go - Add maxRowsPerFetch field to Connection struct
url.go - Parse maxRows from DSN