This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summary~80-85% SQL‑99 compliance achieved via complete window function implementation.
Full changelog
v1.3.0: Window Functions (Phase 2.5)
Complete SQL-99 window function implementation achieving ~80-85% SQL-99 compliance
🚀 Major Features Implemented
Window Function Support
- Complete OVER clause - Full SQL-99 compliant window function parsing
- PARTITION BY and ORDER BY - Complete window specification support with expression parsing
- Window Frame Clauses - ROWS and RANGE frame specifications with proper bounds (UNBOUNDED PRECEDING/FOLLOWING, CURRENT ROW)
Function Categories
- Ranking Functions: ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE() with full integration
- Analytic Functions: LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE() with offset and default value support
- Enhanced Function Calls: Complete parsing with parentheses, arguments, and DISTINCT support
⚡ Performance & Quality
- 1.38M+ operations/second sustained throughput maintained (up to 1.5M peak with concurrency)
- Zero performance regression - all existing functionality performs at same speed
- Race-free implementation - comprehensive concurrent testing validates thread safety
- Memory efficient - object pooling preserved with 60-80% memory reduction
- Production-grade reliability - extensive load testing and memory leak detection
🎯 SQL Standards Compliance
- ~80-85% SQL-99 compliance achieved (significant advancement from ~70% SQL-92 in v1.2.0)
- Complete window function standard implemented per SQL-99 specification
- Advanced analytical capabilities - full support for ranking and analytic window functions
- Complex query compositions - window functions integrated with CTEs and set operations from previous phases
🔧 Technical Implementation
parseFunctionCall()- Complete function call parsing with OVER clause detection and window specification handlingparseWindowSpec()- Window specification parsing with PARTITION BY, ORDER BY, and frame clause supportparseWindowFrame()- Frame clause parsing with ROWS/RANGE and bound specifications (UNBOUNDED, CURRENT ROW)parseFrameBound()- Individual frame bound parsing with expression support for offset values- Enhanced
parseExpression()- Function call detection and routing to window function parsing - Updated
parseSelectStatement()- Integrated enhanced expression parsing for SELECT column lists
📊 Comprehensive Testing
- 6 comprehensive test functions with 14 total test cases covering all window function scenarios
- Basic window functions:
ROW_NUMBER() OVER (ORDER BY column) - Partitioned window functions:
RANK() OVER (PARTITION BY dept ORDER BY salary DESC) - Frame specifications:
SUM(column) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) - Complex compositions: Multiple window functions in single queries with various specifications
- 100% test pass rate with race detection enabled
- Extensive error case coverage with contextual error messages
🔄 Backward Compatibility
- 100% backward compatible - all existing functionality preserved without changes
- API stability - no breaking changes to public interfaces or method signatures
- Legacy test compatibility - all Phase 1, Phase 2, and prior tests continue passing
- Performance maintained - no degradation in existing query parsing performance
Goals Achieved
- ✅ ~80-85% SQL-99 compliance milestone reached
- ✅ Production-grade window function implementation with complete SQL-99 feature set
- ✅ Enhanced parser architecture supporting complex function calls and specifications
- ✅ Comprehensive test coverage for all window function categories
- ✅ Zero performance regression while adding significant new functionality
- ✅ Complete integration with existing CTE and set operations from previous phases
Example Usage
-- Basic ranking
SELECT name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) as rank
FROM employees;
-- Partitioned analytics
SELECT dept, name, salary,
RANK() OVER (PARTITION BY dept ORDER BY salary DESC) as dept_rank,
LAG(salary, 1) OVER (PARTITION BY dept ORDER BY salary) as prev_salary
FROM employees;
-- Frame specifications
SELECT date, amount,
SUM(amount) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as rolling_sum
FROM transactions;
What's Next: Phase 3 (Dialect Specialization) - Multi-dialect parser with PostgreSQL, MySQL, SQL Server, Oracle, and SQLite specific features.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About ajitpratap0/GoSQLX
7 SQL tools (validate, format, parse, lint, security scan, metadata extraction, full analysis) over Streamable HTTP. Public remote server at mcp.gosqlx.dev - no install needed. 1.25M+ ops/sec, 6 SQL dialects.
Related context
Related tools
Beta — feedback welcome: [email protected]