Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
8ef3da6
chore: bump version to 1.0.0.dev2
vistart Apr 12, 2026
6a9d40e
fix: register pytest markers to suppress unknown mark warnings
vistart Apr 14, 2026
809f471
fix(sqlserver): register requires_inner_join pytest marker
vistart Apr 17, 2026
4d013f8
feat(sqlserver): implement complete SQL Server backend
vistart Apr 18, 2026
8162853
refactor(examples): use environment variables for connection config
vistart Apr 18, 2026
3b86121
refactor(examples): follow SQLite example style with section comments
vistart Apr 18, 2026
eacf5d1
fix(sqlserver): resolve example validation issues and add missing dia…
vistart Apr 19, 2026
0be241b
ci: update test workflow with all Python versions and fix healthcheck
vistart Apr 19, 2026
b12dec5
test: add comprehensive test suite for SQL Server backend
vistart Apr 19, 2026
d17bb28
fix(tests): correct test assertions and add aioodbc dependency
vistart Apr 19, 2026
640d1fe
feat(cli): add modular CLI with info, query, introspect, status, name…
vistart Apr 28, 2026
6814d0a
test: add feature parity tests for SQL Server backend
vistart May 1, 2026
04883d0
fix: handle edge cases and update test assertions
vistart May 1, 2026
10f1ecd
feat: add SQL Server function factories
vistart May 1, 2026
2e7d515
refactor: add CLAUDE.md and .claude/ documentation
May 5, 2026
c8efb8b
fix(ci): update test.yml to use git branch for dependencies
May 5, 2026
63bcc8f
feat(sqlserver): add SQL Server dialect protocols, expressions, and c…
May 8, 2026
779a50d
fix(deps): add missing PyYAML dependency for test conftest
vistart May 8, 2026
661975c
fix(functions): add missing Optional import in string.py
vistart May 8, 2026
0df1635
fix: drop Python 3.8 support (pyodbc 5.x requires Python >= 3.9)
vistart May 8, 2026
f9497a9
Create docker-compose.yml
vistart May 18, 2026
eab50cc
fix(sqlserver): align dialect with core API changes and bump CI depen…
vistart May 18, 2026
00c3a8a
fix(sqlserver): fix transaction manager and test compatibility
vistart May 18, 2026
227c21c
fix(sqlserver): fix async backend fetch operations and transaction ma…
vistart May 18, 2026
48e48aa
chore: remove dev server hostname from test_connection, fix example d…
vistart May 19, 2026
3a838a7
chore: remove hardcoded Password123! from examples and CLI docs
vistart May 19, 2026
bc34402
feat(sqlserver): implement full bridge test suite and fix adapter/dia…
vistart May 19, 2026
861e36b
fix(sqlserver): add get_default_adapter_suggestions to mixin, fix asy…
vistart May 19, 2026
4d0d386
test(sqlserver): add query feature bridge test files
vistart May 19, 2026
5253a57
feat(sqlserver): add security test file for dialect identifier format…
vistart May 23, 2026
e3ede15
chore: add .gitattributes to enforce LF line endings
vistart May 23, 2026
398aef6
test(query): add bridge for unicode/emoji/injection round-trip tests
vistart May 24, 2026
65fe24c
test(basic): add bulk operations schema and provider
vistart May 30, 2026
c05701c
refactor(sqlserver): split status introspection helpers
vistart May 31, 2026
8cfb9e9
fix(ci): set TESTSUITE_PROVIDER_REGISTRY and add tests to PYTHONPATH
vistart May 31, 2026
f84e254
fix(ci): add pydantic[email] dependency for testsuite model fixtures
vistart May 31, 2026
f38f695
fix(test): implement setup_pydantic_validated_model abstract methods …
vistart May 31, 2026
552a8c3
chore(deps): loosen pytest dependency constraints
vistart Jun 3, 2026
dc3a295
feat(sqlserver): add expression-level COLLATE support
vistart Jun 3, 2026
cf75ffb
refactor(sqlserver): validate COLLATE names via dialect hook
vistart Jun 3, 2026
f1129b9
style(sqlserver): type COLLATE validation hook parameter
vistart Jun 3, 2026
9a49425
refactor(sqlserver): accept collation expression in validation
vistart Jun 3, 2026
85add17
test(sqlserver): cover SQL/XML standard support boundary
vistart Jun 4, 2026
db5a7ce
feat(sqlserver): add datetime interval expression formatting
vistart Jun 4, 2026
27e2e88
fix: align dependencies and tool config for Python 3.9+
vistart Jun 6, 2026
c5e2c6a
fix: remove rhosocial-activerecord from requirements.txt
vistart Jun 6, 2026
352690d
refactor: split mixins.py and protocols.py into package directories
vistart Jun 26, 2026
dca3f58
feat(sqlserver): Phase 1-3 catch-up — partition DDL, DataType #108, S…
vistart Jul 1, 2026
5214fe5
fix(sqlserver): add profile fixtures and pydantic validated model to …
vistart Jul 1, 2026
92ad123
fix(sqlserver): defer yaml import and skip scenario registration when…
vistart Jul 5, 2026
3c07719
feat: sync bridge files with testsuite rename and add full relation b…
vistart Jul 7, 2026
5cb8421
feat: add bridge files for derived_field, interface feature tests and…
vistart Jul 9, 2026
5fbaec9
test(sqlserver): integrate new testsuite with Sync/Async dual providers
vistart Jul 21, 2026
30ab44c
fix(sqlserver): apply set operation, type, and fixture fixes
vistart Jul 23, 2026
5ae09dd
fix(sqlserver): fix transaction level tracking, cursor await, and exe…
vistart Jul 31, 2026
cda648f
test(sqlserver): add savepoint/pool-transaction bridges and fix SQL S…
vistart Jul 31, 2026
c7106b2
test(sqlserver): align with testsuite refactor + force-close pool on …
vistart Aug 3, 2026
f95077a
test(sqlserver): align with testsuite@dev16 (subdir layout) and fix b…
vistart Aug 3, 2026
f532619
test(sqlserver): rename backend/transaction/test_transaction_isolatio…
vistart Aug 3, 2026
d738418
build(sqlserver): add aioodbc to requirements for AsyncSQLServerBackend
vistart Aug 3, 2026
a8e9301
feat(sqlserver): IF EXISTS support for DROP COLUMN/CONSTRAINT
vistart Aug 6, 2026
2563a72
feat(sqlserver): add NEXT VALUE FOR and MERGE OUTPUT/HOLDLOCK, wire p…
vistart Aug 8, 2026
c8e73ce
feat(sqlserver): add OPTION hints, PIVOT/UNPIVOT, TABLESAMPLE, SELECT…
vistart Aug 8, 2026
e3f4d5b
feat(sqlserver): add in-memory OLTP options, indexed views, full-text…
vistart Aug 8, 2026
4c35fd4
fix(sqlserver): terminate MERGE statement with required trailing semi…
vistart Aug 8, 2026
a04709c
test(sqlserver): add testsuite basic/ddl ALTER TABLE bridge tests and…
vistart Aug 8, 2026
5c74eb8
test(sqlserver): rename ALTER TABLE IF EXISTS test to avoid name coll…
vistart Aug 8, 2026
707091b
ci(sqlserver): allow free-threaded 3.13t job to fail without blocking…
vistart Aug 8, 2026
2371f02
fix(sqlserver): implement SQL Server dialect mappings and adapt backe…
vistart Aug 9, 2026
3cf2855
fix(sqlserver): enable READ_COMMITTED_SNAPSHOT at session start to pr…
vistart Aug 9, 2026
36d5294
fix(sqlserver): handle datetime2 7-digit fractional strings in adapters
vistart Aug 9, 2026
80a6ac8
fix(sqlserver): normalize fractional seconds to 6 digits and introspe…
vistart Aug 9, 2026
e6b0722
chore: add changelog fragment for datetime2 fractional parsing fix
vistart Aug 9, 2026
23a6c91
fix(ci): remove lint-only tools (mypy/black/isort/ruff) from requirem…
vistart Aug 9, 2026
c8c0452
chore: add changelog fragment for lint dep split
vistart Aug 9, 2026
1422edb
test(sqlserver): add testsuite protocol decorator feature tests
vistart Aug 11, 2026
6857232
ci(sqlserver): add Python 3.9 + SQL Server 2017 test job
vistart Aug 11, 2026
77e3f00
chore(sqlserver): support TESTSUITE_ACTIVE_SCENARIOS filtering and ra…
vistart Aug 14, 2026
4b3abbb
feat(backend): override create_schema_differ() to supply SQLServerSch…
vistart Aug 14, 2026
a17bcf2
chore(changelog): remove unreleased changelog.d fragments
vistart Aug 14, 2026
5f4bbdc
ci: publish only via manual workflow_dispatch
vistart Aug 14, 2026
d7ddff1
docs: remove GEMINI.md
vistart Aug 14, 2026
691dbef
ci(test): install core 1.0.0.dev29 from PyPI
vistart Aug 15, 2026
147b715
ci(test): install testsuite 1.0.0.dev16 from PyPI
vistart Aug 15, 2026
c3a405b
ci(test): add codecov coverage upload
vistart Aug 15, 2026
6731390
ci(test): retrigger codecov upload with token
vistart Aug 15, 2026
4cdd72c
docs: update CHANGELOG for v1.0.0.dev2
vistart Aug 15, 2026
e03c3cf
docs: restructure README to match other backends
vistart Aug 15, 2026
5e9a865
docs: add v1.0.0.dev1 initial commit entry to CHANGELOG
vistart Aug 15, 2026
03a24c0
docs: describe dev2 as relatively complete and dev1 as placeholder in…
vistart Aug 15, 2026
689f140
docs: reference release PR #1 in CHANGELOG
vistart Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
68 changes: 68 additions & 0 deletions .claude/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Architecture Guide - python-activerecord-sqlserver

> SQL Server backend implementation for rhosocial-activerecord

## Project Overview

| Item | Value |
|------|-------|
| **Database** | Microsoft SQL Server |
| **Python Driver** | pyodbc |
| **Python Version** | 3.8+ |

## Directory Structure

```
python-activerecord-sqlserver/
├── src/rhosocial/activerecord/backend/impl/sqlserver/
│ ├── __init__.py # Backend initialization
│ ├── __main__.py # CLI entry point
│ ├── backend.py # Sync backend implementation
│ ├── async_backend.py # Async backend implementation
│ ├── config.py # Configuration
│ ├── dialect.py # SQL Server dialect
│ ├── protocols.py # Protocol definitions
│ ├── transaction.py # Transaction management
│ ├── adapters.py # Type adapters
│ ├── mixins.py # SQL Server-specific mixins
│ ├── types.py # SQL Server-specific types
│ ├── cli/ # CLI commands
│ │ ├── connection.py
│ │ ├── info.py
│ │ ├── introspect.py
│ │ ├── named_connection.py
│ │ ├── named_procedure.py
│ │ ├── named_query.py
│ │ ├── output.py
│ │ ├── query.py
│ │ └── status.py
│ ├── expression/ # SQL Server-specific expressions
│ │ └── locking.py # Locking expressions (FOR UPDATE)
│ ├── functions/ # SQL Server-specific functions
│ ├── introspection/ # Schema introspection
│ └── show/ # SHOW statements
├── tests/
│ └── rhosocial/activerecord_sqlserver_test/
└── pyproject.toml
```

## SQL Server-Specific Features

- **TABLESAMPLE**: Table sampling for large datasets
- **PIVOT/UNPOT**: Pivot and unpivot queries
- **OUTPUT clause**: Returning modified data
- **HierarchyId**: Hierarchical data support
- **JSON support**: JSON functions and indexes

## Expression-Dialect System

Like all backends, SQL Server uses the Expression-Dialect separation:
- Expression classes define query structure
- Dialect classes handle SQL generation

SQL Server-specific expressions in `expression/` directory.

## Reference

- [Core architecture](../python-activerecord/.claude/architecture.md)
- [Backend development guide](../python-activerecord/.claude/backend_development.md)
577 changes: 577 additions & 0 deletions .claude/backend_development.md

Large diffs are not rendered by default.

Loading
Loading