From f50f6b8b747005d75db5832954571da947864323 Mon Sep 17 00:00:00 2001 From: Matt Kornfield Date: Thu, 21 May 2026 09:38:07 -0700 Subject: [PATCH 1/2] chore: bump sqlfluff to 4.1.0 --- packages/data-designer-engine/pyproject.toml | 2 +- uv.lock | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/data-designer-engine/pyproject.toml b/packages/data-designer-engine/pyproject.toml index 87f19785b..c9fe9e225 100644 --- a/packages/data-designer-engine/pyproject.toml +++ b/packages/data-designer-engine/pyproject.toml @@ -53,7 +53,7 @@ dependencies = [ "python-multipart>=0.0.27,<1", # 0.0.27 fixes security advisory pulled in by mcp "ruff>=0.14.10,<1", "scipy>=1.11.0,<2", - "sqlfluff>=3.2.0,<4", + "sqlfluff>=4.1.0,<5", "tiktoken>=0.8.0,<1", ] diff --git a/uv.lock b/uv.lock index 123ac8e8a..94e429aa8 100644 --- a/uv.lock +++ b/uv.lock @@ -909,7 +909,7 @@ requires-dist = [ { name = "python-multipart", specifier = ">=0.0.27,<1" }, { name = "ruff", specifier = ">=0.14.10,<1" }, { name = "scipy", specifier = ">=1.11.0,<2" }, - { name = "sqlfluff", specifier = ">=3.2.0,<4" }, + { name = "sqlfluff", specifier = ">=4.1.0,<5" }, { name = "tiktoken", specifier = ">=0.8.0,<1" }, ] @@ -4634,7 +4634,7 @@ wheels = [ [[package]] name = "sqlfluff" -version = "3.5.0" +version = "4.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "chardet" }, @@ -4644,16 +4644,15 @@ dependencies = [ { name = "jinja2" }, { name = "pathspec" }, { name = "platformdirs" }, - { name = "pytest" }, { name = "pyyaml" }, { name = "regex" }, { name = "tblib" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4c/a8/d3dc6c510cc3bba9abbf7a3052a96d5ce6771b71dda141846003fa37277a/sqlfluff-3.5.0.tar.gz", hash = "sha256:2d0a546078ffb021de7021b9a6c2a50e5eef590daa820d5f1b082d24a1d5e1d4", size = 921199, upload-time = "2025-10-18T19:33:07.778Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/a1/3430aebc4fae35d7e466e793b5da2f36c2245af092311520dc1d3d3146d6/sqlfluff-4.2.1.tar.gz", hash = "sha256:32f43fbf6721e57f1a5a87d71df0d94b84ecba6ed65727266c7fa60991110fb9", size = 1013384, upload-time = "2026-05-14T21:15:37.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/d5/83c3eacdd6c3249fb5f8a0b5612ab10b661862e0df869951f45fd837448d/sqlfluff-3.5.0-py3-none-any.whl", hash = "sha256:6e5fb7a0c491676ded68912245fc0627e88f8b0e6290bd4b54a65ce735f69716", size = 921597, upload-time = "2025-10-18T19:33:05.839Z" }, + { url = "https://files.pythonhosted.org/packages/5f/55/8830f3204939cc965c72680bfae99b0f3fd6c16bffdaf79372ad0a3d1ca6/sqlfluff-4.2.1-py3-none-any.whl", hash = "sha256:ea84f196c41f45df40a851b0881cb3fbb660570e07acbbfd304ff4e9b893424d", size = 1002493, upload-time = "2026-05-14T21:15:35.582Z" }, ] [[package]] From a3e01c11c6e526e54f2e37e8278eafb5942dc267 Mon Sep 17 00:00:00 2001 From: Matt Kornfield Date: Fri, 22 May 2026 10:29:28 -0700 Subject: [PATCH 2/2] chore: add some sql format unit tests Signed-off-by: Matt Kornfield --- .../tests/engine/validators/test_sql.py | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/data-designer-engine/tests/engine/validators/test_sql.py b/packages/data-designer-engine/tests/engine/validators/test_sql.py index 911ce1f4d..21b18dbe8 100644 --- a/packages/data-designer-engine/tests/engine/validators/test_sql.py +++ b/packages/data-designer-engine/tests/engine/validators/test_sql.py @@ -9,10 +9,22 @@ from data_designer.config.validator_params import CodeValidatorParams from data_designer.engine.validators.sql import SQLValidator - -def test_valid_ansi_sql_code() -> None: - sql_validator = SQLValidator(CodeValidatorParams(code_lang=CodeLang.SQL_ANSI)) - code = "SELECT category, COUNT(*) as total_incidents FROM security_incidents_2 GROUP BY category;" +VALID_SQL_BY_DIALECT = [ + ( + CodeLang.SQL_ANSI, + "SELECT category, COUNT(*) AS total_incidents FROM security_incidents_2 GROUP BY category;", + ), + (CodeLang.SQL_SQLITE, "SELECT sqlite_version() AS version;"), + (CodeLang.SQL_TSQL, "SELECT TOP 1 name FROM sys.objects;"), + (CodeLang.SQL_BIGQUERY, "SELECT * EXCEPT(sensitive_column) FROM `project.dataset.table`;"), + (CodeLang.SQL_MYSQL, "SELECT `name` FROM users LIMIT 1;"), + (CodeLang.SQL_POSTGRES, "SELECT 1::int AS value;"), +] + + +@pytest.mark.parametrize(("code_lang", "code"), VALID_SQL_BY_DIALECT) +def test_valid_sql_code_for_supported_dialects(code_lang: CodeLang, code: str) -> None: + sql_validator = SQLValidator(CodeValidatorParams(code_lang=code_lang)) result = sql_validator.run_validation([{"sql": code}]) assert result.data[0].is_valid assert result.data[0].error_messages == ""