SQL grammar validator for SingleStore queries
Project description
singlestore-sql-validator
singlestore-sql-validator is a Python library for validating SQL queries using the SingleStore Language Server (version 0.1.3 and later). It provides a convenient interface to check SQL syntax and semantics by communicating with a SingleStore language server instance over TCP or WebSocket (with optional TLS support).
Features
- Validate SQL queries for correctness using SingleStore's language server
- Supports TCP, WS, and WSS (WebSocket Secure) connections
- Flexible connection configuration (host/port or connection string)
- TLS/SSL support for secure connections
- Returns detailed validation results, including error tokens and suggestions
Installation
Install via pip (after cloning or packaging):
pip install singlestore-sql-validator
Or add to your pyproject.toml as a dependency.
Usage
from sql_validator import Validator, ConnectionMode
# Example: Connect using TCP
validator = Validator(
connection_mode=ConnectionMode.TCP,
server_host="localhost",
server_port=9000
)
# Example: Connect using a connection string
# validator = Validator(connection_string="tcp://localhost:9000")
result = validator.validate("SELECT * FROM my_table;")
if result.is_valid:
print("Query is valid!")
else:
print(f"Error: {result.error_token} at {result.error_token_position}")
if result.alternative_tokens:
print("Suggestions:", result.alternative_tokens)
API
Validator
Initialization
You can initialize a Validator in two ways:
-
By specifying
connection_mode,server_host, andserver_port:connection_mode:ConnectionMode.TCP,ConnectionMode.WS, orConnectionMode.WSSserver_host: Hostname of the language serverserver_port: Port numbertls: Enable TLS (for WSS or secure TCP)tls_ca_file: Path to CA certificate (optional)tls_insecure_skip_verify: Skip TLS verification (optional)
-
By providing a
connection_string(e.g.,tcp://localhost:9000,ws://host:port,wss://host:port)
Methods
validate(query: str, version: str = "") -> ValidationResult- Validates the given SQL query.
version(optional): Database version string (format:major.minor.build, or empty/"default").- Returns a
ValidationResultobject.
Static Methods
_validate_version(version: str) -> bool- Checks if the version string matches the required pattern (
major.minor.build).
- Checks if the version string matches the required pattern (
ValidationResult
is_valid:bool— Whether the query is validerror_token:Optional[str]— The token that caused the error (if any)error_token_position:Optional[TokenPosition]— Position of the error tokenalternative_tokens:Optional[CompletionList]— Suggestions for fixing the error
Example
from sql_validator import Validator
validator = Validator(connection_string="tcp://localhost:9000")
result = validator.validate("SELECT foo FROM bar;")
if result.is_valid:
print("Valid!")
else:
print("Invalid SQL:", result.error_token)
Notes
- This library is intended to be used with a running SingleStore Language Server instance (version 0.1.3 or later).
- It does not start or manage the server process itself.
- Documentation for the SingleStore Language Server can be found at: https://github.com/singlestore-labs/language-server
License
This project is licensed under the terms of the Apache License, Version 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file singlestore_sql_validator-0.0.3.tar.gz.
File metadata
- Download URL: singlestore_sql_validator-0.0.3.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3518f8ab5028a3ea09c7a098a545dafd1a97116e77949e13ccb0e66c1852f7ea
|
|
| MD5 |
0c7ee178d922910852683712d14cb433
|
|
| BLAKE2b-256 |
4bd911123ce77f42a4b458656a6282fca596f273c129cdc1b880e141044e4e8d
|
File details
Details for the file singlestore_sql_validator-0.0.3-py3-none-any.whl.
File metadata
- Download URL: singlestore_sql_validator-0.0.3-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4570d751554be9058ce2fd920a4614d878ae7773bdb652ec5d6250ffd6fd8b33
|
|
| MD5 |
058f43c482e6d81518528b6617a7ad49
|
|
| BLAKE2b-256 |
b686234f180997836380f4c0397f6ec01cc7b5587ef8a6467021c72a23c3e80a
|