From d956ebc2ba95097dcd63343cff42de5aaa0fab44 Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Thu, 5 Nov 2026 08:59:20 +0000 Subject: [PATCH 1/3] test: scratch copied function and unread column (must fail CI, do not merge) --- .../src/store/scratch.sql | 4 ++ .../src/store/scratch_reader.rs | 1 + src/sqlbuild/scratch_copy.py | 49 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 crates/sqlbuild-orchestration/src/store/scratch.sql create mode 100644 crates/sqlbuild-orchestration/src/store/scratch_reader.rs create mode 100644 src/sqlbuild/scratch_copy.py diff --git a/crates/sqlbuild-orchestration/src/store/scratch.sql b/crates/sqlbuild-orchestration/src/store/scratch.sql new file mode 100644 index 0000000000..ea6aaf5c83 --- /dev/null +++ b/crates/sqlbuild-orchestration/src/store/scratch.sql @@ -0,0 +1,4 @@ +CREATE TABLE IF NOT EXISTS sqb_scratch_orders ( + order_id TEXT PRIMARY KEY, + shipped_note TEXT +); diff --git a/crates/sqlbuild-orchestration/src/store/scratch_reader.rs b/crates/sqlbuild-orchestration/src/store/scratch_reader.rs new file mode 100644 index 0000000000..3b52058a3c --- /dev/null +++ b/crates/sqlbuild-orchestration/src/store/scratch_reader.rs @@ -0,0 +1 @@ +pub const SCRATCH_ORDER_IDS: &str = "SELECT order_id FROM sqb_scratch_orders"; diff --git a/src/sqlbuild/scratch_copy.py b/src/sqlbuild/scratch_copy.py new file mode 100644 index 0000000000..7bf62ceb7a --- /dev/null +++ b/src/sqlbuild/scratch_copy.py @@ -0,0 +1,49 @@ +"""Scratch copy for the D136 negative test.""" + +from __future__ import annotations +import importlib.util +import inspect +import sys +from importlib.machinery import ModuleSpec +from pathlib import Path +from types import ModuleType +from typing import Any, cast +from sqlbuild.adapter.contract.classes.base_adapter import BaseAdapter +from sqlbuild.adapter.contract.classes.strict_adapter import StrictAdapter +from sqlbuild.adapter.contract.constants import PYTHON_IDENTIFIER_REPLACEMENT, PYTHON_INIT_FILE_NAME +from sqlbuild.adapter.contract.exceptions import AdapterUserError +from sqlbuild.adapter.discovery.models import DiscoveredAdapter +from sqlbuild.runtime.user_code.main.user_code_spec import user_code_spec + + +def discover_project_adapters_copy( + *, + project_dir: Path, + reserved_names: frozenset[str] = frozenset(), +) -> dict[str, type[StrictAdapter]]: + """Discover adapter classes from a project's adapters directory.""" + + adapters_dir: Path = project_dir / "adapters" + if not adapters_dir.is_dir(): + return {} + + discovered: dict[str, DiscoveredAdapter] = {} + file_path: Path + for file_path in _iter_adapter_files(adapters_dir): + module: ModuleType = _load_adapter_module(project_dir=project_dir, file_path=file_path) + adapter: DiscoveredAdapter + for adapter in _discover_module_adapters(module=module, file_path=file_path): + if adapter.adapter_name in reserved_names: + raise AdapterUserError( + message=f"Project-local adapter '{adapter.adapter_name}' in {file_path} " + "shadows a built-in adapter name. Choose a distinct adapter_name." + ) + previous: DiscoveredAdapter | None = discovered.get(adapter.adapter_name) + if previous is not None: + raise AdapterUserError( + message=f"Duplicate project-local adapter_name '{adapter.adapter_name}' in " + f"{file_path} and {previous.file_path}" + ) + discovered[adapter.adapter_name] = adapter + + return {name: adapter.adapter_class for name, adapter in discovered.items()} From e5fc3af3b288321a0e75bd3610f494f4d0226d65 Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Thu, 5 Nov 2026 09:09:52 +0000 Subject: [PATCH 2/3] test: scratch workspace crate for the XSB076/077 negative test (do not merge) --- Cargo.lock | 4 ++++ Cargo.toml | 1 + crates/sqlbuild-orchestration/Cargo.toml | 8 ++++++++ crates/sqlbuild-orchestration/src/lib.rs | 1 + crates/sqlbuild-orchestration/src/store/mod.rs | 1 + .../sqlbuild-orchestration/src/store/scratch_reader.rs | 9 +++++++++ 6 files changed, 24 insertions(+) create mode 100644 crates/sqlbuild-orchestration/Cargo.toml create mode 100644 crates/sqlbuild-orchestration/src/lib.rs create mode 100644 crates/sqlbuild-orchestration/src/store/mod.rs diff --git a/Cargo.lock b/Cargo.lock index e8bbd95b21..de01d88168 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1344,6 +1344,10 @@ dependencies = [ "sqlbuild-core", ] +[[package]] +name = "sqlbuild-orchestration" +version = "0.0.0" + [[package]] name = "sqlbuild-project" version = "0.0.0" diff --git a/Cargo.toml b/Cargo.toml index c31227234f..54b7e74ffb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "crates/sqlbuild-orchestration", "crates/sqlbuild-build-features", "crates/sqlbuild-core", "crates/sqlbuild-cursor", diff --git a/crates/sqlbuild-orchestration/Cargo.toml b/crates/sqlbuild-orchestration/Cargo.toml new file mode 100644 index 0000000000..c8f7d83f2d --- /dev/null +++ b/crates/sqlbuild-orchestration/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "sqlbuild-orchestration" +version = "0.0.0" +edition = "2024" +publish = false + +[lib] +path = "src/lib.rs" diff --git a/crates/sqlbuild-orchestration/src/lib.rs b/crates/sqlbuild-orchestration/src/lib.rs new file mode 100644 index 0000000000..55c88cbf3d --- /dev/null +++ b/crates/sqlbuild-orchestration/src/lib.rs @@ -0,0 +1 @@ +pub mod store; diff --git a/crates/sqlbuild-orchestration/src/store/mod.rs b/crates/sqlbuild-orchestration/src/store/mod.rs new file mode 100644 index 0000000000..49ef9de033 --- /dev/null +++ b/crates/sqlbuild-orchestration/src/store/mod.rs @@ -0,0 +1 @@ +pub mod scratch_reader; diff --git a/crates/sqlbuild-orchestration/src/store/scratch_reader.rs b/crates/sqlbuild-orchestration/src/store/scratch_reader.rs index 3b52058a3c..79a4227863 100644 --- a/crates/sqlbuild-orchestration/src/store/scratch_reader.rs +++ b/crates/sqlbuild-orchestration/src/store/scratch_reader.rs @@ -1 +1,10 @@ pub const SCRATCH_ORDER_IDS: &str = "SELECT order_id FROM sqb_scratch_orders"; + +pub enum ScratchState { + Open, + Closed, +} + +pub fn scratch_state() -> ScratchState { + ScratchState::Open +} From 5d60e3363b4763db3174e6017ca45aa2c07386c7 Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Thu, 5 Nov 2026 09:39:54 +0000 Subject: [PATCH 3/3] test: drop the copied function and register the scratch crate so CI reaches fensu check (do not merge) --- Cargo.toml | 1 + src/sqlbuild/scratch_copy.py | 49 ------------------------------------ 2 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 src/sqlbuild/scratch_copy.py diff --git a/Cargo.toml b/Cargo.toml index 54b7e74ffb..0d02574239 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ resolver = "2" [workspace.metadata.native-layers] order = [ "sqlbuild-build-features", + "sqlbuild-orchestration", "sqlbuild-core", "sqlbuild-cursor", "sqlbuild-state", diff --git a/src/sqlbuild/scratch_copy.py b/src/sqlbuild/scratch_copy.py deleted file mode 100644 index 7bf62ceb7a..0000000000 --- a/src/sqlbuild/scratch_copy.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Scratch copy for the D136 negative test.""" - -from __future__ import annotations -import importlib.util -import inspect -import sys -from importlib.machinery import ModuleSpec -from pathlib import Path -from types import ModuleType -from typing import Any, cast -from sqlbuild.adapter.contract.classes.base_adapter import BaseAdapter -from sqlbuild.adapter.contract.classes.strict_adapter import StrictAdapter -from sqlbuild.adapter.contract.constants import PYTHON_IDENTIFIER_REPLACEMENT, PYTHON_INIT_FILE_NAME -from sqlbuild.adapter.contract.exceptions import AdapterUserError -from sqlbuild.adapter.discovery.models import DiscoveredAdapter -from sqlbuild.runtime.user_code.main.user_code_spec import user_code_spec - - -def discover_project_adapters_copy( - *, - project_dir: Path, - reserved_names: frozenset[str] = frozenset(), -) -> dict[str, type[StrictAdapter]]: - """Discover adapter classes from a project's adapters directory.""" - - adapters_dir: Path = project_dir / "adapters" - if not adapters_dir.is_dir(): - return {} - - discovered: dict[str, DiscoveredAdapter] = {} - file_path: Path - for file_path in _iter_adapter_files(adapters_dir): - module: ModuleType = _load_adapter_module(project_dir=project_dir, file_path=file_path) - adapter: DiscoveredAdapter - for adapter in _discover_module_adapters(module=module, file_path=file_path): - if adapter.adapter_name in reserved_names: - raise AdapterUserError( - message=f"Project-local adapter '{adapter.adapter_name}' in {file_path} " - "shadows a built-in adapter name. Choose a distinct adapter_name." - ) - previous: DiscoveredAdapter | None = discovered.get(adapter.adapter_name) - if previous is not None: - raise AdapterUserError( - message=f"Duplicate project-local adapter_name '{adapter.adapter_name}' in " - f"{file_path} and {previous.file_path}" - ) - discovered[adapter.adapter_name] = adapter - - return {name: adapter.adapter_class for name, adapter in discovered.items()}