sql-cli 1.73.1

SQL query tool for CSV/JSON with both interactive TUI and non-interactive CLI modes - perfect for exploration and automation
Documentation
# Keyword Cleanup Progress Report

## What We've Accomplished Today

### ✅ Completed Optimizations

1. **Added Token Helper Methods** (`src/sql/parser/lexer.rs`)
   - `Token::from_keyword()` - Convert string to token
   - `Token::is_logical_operator()` - Check for AND/OR
   - `Token::is_join_type()` - Check for join types
   - `Token::is_clause_terminator()` - Check for clause boundaries
   - `Token::as_keyword_str()` - Get string representation

2. **Reduced `to_uppercase()` Calls**
   - **Before**: 20 calls
   - **After**: 15 calls (25% reduction)
   - Eliminated redundant uppercase conversions in hot paths

3. **Specific Improvements** (`src/sql/recursive_parser.rs`)
   - Optimized AND/OR detection in autocomplete (lines 1882-1887)
   - Cached uppercase conversions in WHERE clause parsing (lines 1986-2012)
   - Optimized ORDER BY detection (lines 2028-2030)
   - Created helper closure for logical operator detection

### 📊 Performance Impact
- Fewer string allocations in autocomplete and parsing paths
- Reduced CPU usage for case-insensitive comparisons
- Cleaner, more maintainable code

## Remaining `to_uppercase()` Calls

Still present in:
1. WEB CTE parsing (`parse_web_cte_spec`)
   - URL, FORMAT, CACHE, HEADERS, METHOD, BODY, JSON_PATH keywords
2. Function/generator name lookups
3. Some identifier comparisons (RANGE, ORDER)

## Next Steps for Tomorrow

### 1. Extract WEB CTE Module
Create new module structure:
```
src/web_cte/
├── mod.rs          # Public API
├── spec.rs         # WebCTESpec and related types
├── parser.rs       # WEB CTE parsing logic
├── executor.rs     # HTTP execution
├── auth.rs         # Authentication (Bearer, Basic, future NTLM proxy)
└── cache.rs        # Response caching
```

### 2. Move WEB CTE Logic
- Extract `parse_web_cte_spec()` and related methods
- Move `WebCTESpec` type from AST
- Create clean separation between SQL and HTTP concerns

### 3. Further Keyword Optimizations
- Consider keyword interning for frequently used strings
- Pre-compute keyword sets for validation
- Use perfect hashing for keyword lookups

## Code Quality Improvements
- Better separation of concerns
- Reduced coupling between parser and HTTP features
- More testable components

## Notes on NTLM
- Flask proxy solution is working well for NTLM auth
- Document as recommended pattern for legacy auth systems
- Future: Could add `--web-proxy` option for auth proxies