Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
bcc0d47
Implement SQLAlchemy Priority 1 features with dual 1.4+/2.0+ compatib…
kesmit13 Aug 5, 2025
166a549
Convert tests to use pytest fixtures with database isolation
kesmit13 Aug 6, 2025
7c86574
Remove unneeded files
kesmit13 Aug 6, 2025
34b20a9
Fix transaction issues in integration tests
kesmit13 Aug 6, 2025
ee3645e
Improve connection URL handling in test fixtures
kesmit13 Aug 6, 2025
d63a87e
Update test suite configuration and improve test reliability
kesmit13 Aug 6, 2025
2f431f2
Add Docker support for automated test database setup
kesmit13 Aug 6, 2025
64d4c90
Optimize test performance with shared database and random table names
kesmit13 Aug 6, 2025
04620a3
Fix SQLAlchemy 2.0 compatibility warnings in tests
kesmit13 Aug 6, 2025
cbb09a0
Fix test discovery and Docker container integration
kesmit13 Aug 6, 2025
f4708e7
Replace deprecated text() calls with exec_driver_sql() in percent sig…
kesmit13 Aug 6, 2025
940fe43
Fix test database connection handling in conftest
kesmit13 Aug 6, 2025
86e79ba
Convert TestErrorHandling from unittest to pytest fixtures
kesmit13 Aug 7, 2025
bc648c7
Clean up pytest fixture configuration and fix URL handling
kesmit13 Aug 7, 2025
372229b
Improve test database handling for external servers
kesmit13 Aug 7, 2025
6b7a6a2
Add support for SINGLESTOREDB_INIT_DB_URL environment variable
kesmit13 Aug 7, 2025
852134f
Refactor database connection handling in conftest.py
kesmit13 Aug 7, 2025
1d1187f
Remove unneeded files
kesmit13 Aug 7, 2025
8a962c4
Improve test database connection handling
kesmit13 Aug 7, 2025
798b4e2
Add logging
kesmit13 Aug 7, 2025
03e3974
Increase logging
kesmit13 Aug 8, 2025
e2eb34c
Focus in on HTTP tests
kesmit13 Aug 8, 2025
6e55e9c
Add debugging code
kesmit13 Aug 8, 2025
f6d7404
Add debugging code
kesmit13 Aug 8, 2025
b715e8d
Add debugging code
kesmit13 Aug 8, 2025
d50d0e5
Add debugging code
kesmit13 Aug 8, 2025
8e19fa1
Add debugging code
kesmit13 Aug 8, 2025
bde7c20
Add automatic SingleStore Docker container management for docs genera…
kesmit13 Aug 8, 2025
aaeca76
Remove debugging info
kesmit13 Aug 8, 2025
9bb96ba
Insert all tests again
kesmit13 Aug 8, 2025
fb673ca
Add query debugging
kesmit13 Aug 11, 2025
f4188ae
Remove init db URL
kesmit13 Aug 11, 2025
c525a6f
Clean up connections
kesmit13 Aug 11, 2025
08c0b7c
Try function level scope of engine
kesmit13 Aug 11, 2025
0878fe9
Test without HTTP
kesmit13 Aug 11, 2025
47adb39
Test without HTTP
kesmit13 Aug 11, 2025
b1d034f
Test updates
kesmit13 Aug 12, 2025
b9939f5
Test updates
kesmit13 Aug 12, 2025
fbdaa8c
Remove test_connection
kesmit13 Aug 12, 2025
889e8bf
Remove test_deferred_connection
kesmit13 Aug 12, 2025
6731eb0
Try older version of Ubuntu
kesmit13 Aug 14, 2025
c0bf19d
Change back to ubuntu latest
kesmit13 Aug 14, 2025
eee46ef
Diagnose Data API issues
kesmit13 Aug 15, 2025
13cd837
Diagnose Data API issues
kesmit13 Aug 15, 2025
7824e24
fix: Eliminate SHARD KEY and SORT KEY reflection warnings
kesmit13 Aug 15, 2025
9a702cd
test: Add comprehensive key reflection tests and fix FULLTEXT regex
kesmit13 Aug 15, 2025
54eb039
feat: Add support for VECTOR KEY with INDEX_OPTIONS and comprehensive…
kesmit13 Aug 15, 2025
1f86eb6
Disable HTTP tests for now
kesmit13 Aug 15, 2025
74d2115
Disable HTTP tests for now
kesmit13 Aug 15, 2025
ec68700
feat: Add comprehensive SHARD KEY support with Table constructor inte…
kesmit13 Aug 15, 2025
64fd501
docs: Standardize docstrings to numpydoc format and improve SQLAlchem…
kesmit13 Aug 15, 2025
99b85bc
test: Add comprehensive sort key test coverage
kesmit13 Aug 15, 2025
87b59fa
fix: Resolve test_vector_key.py f-string issues and SQLAlchemy 2.0 de…
kesmit13 Aug 15, 2025
f0ade14
style: Fix flake8 code quality issues and update documentation
kesmit13 Aug 19, 2025
4b2f1ac
feat: Add MultiValueIndex DDL element for JSON array indexing
kesmit13 Aug 19, 2025
c3dae35
feat: Add FullTextIndex support and refactor VectorKey API for consis…
kesmit13 Aug 19, 2025
9ede0a8
refactor: Modernize ShardKey API and centralize DDL compilation
kesmit13 Aug 19, 2025
99292fd
refactor: Modernize DDL compilation system and enhance ShardKey/SortK…
kesmit13 Aug 19, 2025
23a74cc
Fix ShardKey test
kesmit13 Aug 19, 2025
67eaf76
fix: Add column name escaping to DDL compilation for special characters
kesmit13 Aug 19, 2025
4650ffb
refactor!: Modernize DDL element APIs with variable positional arguments
kesmit13 Aug 20, 2025
bf9712c
feat: Add ASC/DESC direction support to ShardKey for advanced shardin…
kesmit13 Aug 20, 2025
441e2c3
fix: Remove SQLAlchemy 2.0 deprecation warnings in tests
kesmit13 Aug 20, 2025
d9121a0
feat: Add Python boolean support for SingleStore table options
kesmit13 Aug 20, 2025
4b44634
feat: Add ColumnGroup DDL element for columnstore table optimization
kesmit13 Aug 20, 2025
e422baa
feat: Add comprehensive SingleStore table type support with RowStore …
kesmit13 Aug 20, 2025
5aef525
feat: Enhance VectorKey and MultiValueIndex with Dict support for ind…
kesmit13 Aug 20, 2025
b77d2a1
test: Add comprehensive reflection tests for SingleStoreDB table feat…
kesmit13 Aug 20, 2025
3577723
feat: Enhance reflection system with comprehensive DESC sort key and …
kesmit13 Aug 21, 2025
6f45d62
Fix type checks
kesmit13 Aug 21, 2025
2b2171a
Enable HTTP tests
kesmit13 Oct 24, 2025
7563b2c
Add alternate connection string
kesmit13 Oct 24, 2025
0d70123
refactor: Update table options formatting and column group syntax
kesmit13 Nov 3, 2025
63f49b3
Add HTTP server debugging
kesmit13 Nov 4, 2025
ffbe1fa
Add HTTP server debugging
kesmit13 Nov 4, 2025
acc4d8e
Add HTTP server debugging
kesmit13 Nov 4, 2025
4d06bc2
Add HTTP server debugging
kesmit13 Nov 4, 2025
a596b27
Add HTTP server debugging
kesmit13 Nov 4, 2025
544074d
Add HTTP server debugging
kesmit13 Nov 4, 2025
5aa83ef
Add HTTP server debugging
kesmit13 Nov 4, 2025
f4c6762
Use dynamic docker instance
kesmit13 Nov 4, 2025
09c0aec
Use dynamic docker instance
kesmit13 Nov 4, 2025
acf7fc9
Use dynamic docker instance
kesmit13 Nov 4, 2025
34423f0
Use dynamic docker instance
kesmit13 Nov 4, 2025
4655be4
Use dynamic docker instance
kesmit13 Nov 4, 2025
dbc1da1
Remove unused docker service
kesmit13 Nov 4, 2025
d7f260d
Make sure data api is used for HTTP tests
kesmit13 Nov 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 17 additions & 21 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,58 +11,54 @@ jobs:
test-coverage:
runs-on: ubuntu-latest

services:
singlestore:
image: ghcr.io/singlestore-labs/singlestoredb-dev:latest
ports:
- 3307:3306
- 8081:8080
- 9080:9080
env:
SINGLESTORE_LICENSE: ${{ secrets.SINGLESTORE_LICENSE }}
ROOT_PASSWORD: "root"

steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
python-version: "3.11"
cache: "pip"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"

- name: Install SingleStore package
- name: Install SingleStore package and SQLAlchemy 2.0.x
run: |
pip install 'sqlalchemy~=2.0.0'
pip install .

- name: Run MySQL protocol tests
run: |
pytest -v --cov=sqlalchemy_singlestoredb --pyargs sqlalchemy_singlestoredb.tests
env:
COVERAGE_FILE: "coverage-mysql.cov"
SINGLESTOREDB_URL: "root:[email protected]:3307"
COVERAGE_FILE: "coverage-mysql-2-0.cov"
SINGLESTOREDB_MANAGEMENT_TOKEN: ${{ secrets.CLUSTER_API_KEY }}

- name: Run HTTP protocol tests
run: |
pytest -v --cov=sqlalchemy_singlestoredb --pyargs sqlalchemy_singlestoredb.tests
env:
COVERAGE_FILE: "coverage-http.cov"
SINGLESTOREDB_URL: "http://root:[email protected]:9080"
SINGLESTOREDB_MANAGEMENT_TOKEN: ${{ secrets.CLUSTER_API_KEY }}
# Can not change databases using HTTP API. The URL below will be
# used to create the database and the generated database name will
# be applied to the above URL.
SINGLESTOREDB_INIT_DB_URL: "root:[email protected]:3307"
USE_DATA_API: "1"

- name: Install SingleStore package and SQLAlchemy 1.4.x
run: |
pip install 'sqlalchemy~=1.4.0'

- name: Run MySQL protocol tests
run: |
pytest -v --cov=sqlalchemy_singlestoredb --pyargs sqlalchemy_singlestoredb.tests
env:
COVERAGE_FILE: "coverage-mysql-1-4.cov"
SINGLESTOREDB_MANAGEMENT_TOKEN: ${{ secrets.CLUSTER_API_KEY }}

- name: Generate report
run: |
coverage combine coverage-mysql.cov coverage-http.cov
coverage combine coverage-mysql-2-0.cov coverage-mysql-1-4.cov
coverage report
coverage xml
coverage html
20 changes: 10 additions & 10 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,16 @@ jobs:

runs-on: ubuntu-latest

services:
singlestore:
image: ghcr.io/singlestore-labs/singlestoredb-dev:latest
ports:
- 3307:3306
- 8081:8080
- 9080:9000
env:
SINGLESTORE_LICENSE: ${{ secrets.SINGLESTORE_LICENSE }}
ROOT_PASSWORD: "root"
# services:
# singlestore:
# image: ghcr.io/singlestore-labs/singlestoredb-dev:latest
# ports:
# - 3307:3306
# - 8081:8080
# - 9080:9000
# env:
# SINGLESTORE_LICENSE: ${{ secrets.SINGLESTORE_LICENSE }}
# ROOT_PASSWORD: "root"

steps:
- uses: actions/checkout@v3
Expand Down
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
## Editor temporary/working/backup files
.hypothesis
.serena
.claude
CLAUDE.md
dev-docs
.#*
*\#*\#
[#]*#
Expand Down Expand Up @@ -57,6 +62,7 @@ dist
# wheel files
*.whl
**/wheelhouse/*
**/.hypothesis
# coverage
.coverage
swat.egg-info/
Expand All @@ -73,6 +79,20 @@ ehthumbs.db
Icon?
Thumbs.db

**/CLAUDE.md
.claude
.serena
.vscode
.venv
**/.hypothesis
dev-docs
**/.ipynb_checkpoints
**/.benchmarks
*.ipynb
certs
**/*.prof
**/*.pprof

## Documentation generated files
docs/src/_build/doctrees
docs/src/generated
Expand Down
22 changes: 22 additions & 0 deletions PLANNING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# SingleStoreDB SQLAlchemy dialect

This project is an SQLAlchemy dialect for the SingleStoreDB database. The goal
is to support as many of the SingleStoreDB features in the SQLAlchemy
framework. The SingleStoreDB dialect is based on the MySQL dialect that is
part of SQLAlchemy. SingleStoreDB uses the same protocol as MySQL, but does
add a number of new features not supported by MySQL. Those need to be added
to the SingleStoreDB SQLAlchemy dialect.

## Resources

- SingleStoreDB docs - https://docs.singlestore.com/
- SQLAlchemy project web page - https://www.sqlalchemy.org/
- SQLAlchemy project github repo - https://github.com/sqlalchemy/sqlalchemy/
- SingleStoreDB Python SDK repo - https://github.com/singlestore-labs/singlestoredb-python/
- Python language - https://python.org/doc/


## Requirements

- Still requires SQLAlchemy v1.4 compatilibity
- Must work for Python 3.9 or greater
Loading