diff --git a/Cargo.lock b/Cargo.lock
index 77884247c9..5957511d7a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4143,7 +4143,9 @@ dependencies = [
"sqlbuild-sqltext",
"sqlclean",
"sqlquack-syntax",
+ "sqlquack-syntax-bigquery",
"sqlquack-syntax-postgres",
+ "stacker",
]
[[package]]
@@ -4431,7 +4433,6 @@ dependencies = [
"blake3",
"fensu-policy",
"globset",
- "polyglot-sql",
"rayon",
"regex",
"rustc-hash",
@@ -4445,6 +4446,7 @@ dependencies = [
"sqlbuild-scopes",
"sqlbuild-sqltext",
"sqlclean",
+ "sqlquack-syntax",
"stacker",
"tempfile",
"toml",
@@ -4499,7 +4501,7 @@ dependencies = [
[[package]]
name = "sqlquack-syntax"
version = "0.2.0"
-source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=4d0c6bc56da0e44eb164601a2af673ae7998257d#4d0c6bc56da0e44eb164601a2af673ae7998257d"
+source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=edfa30b26a0bab86661f96490b86a4f24b92db0a#edfa30b26a0bab86661f96490b86a4f24b92db0a"
dependencies = [
"serde",
"serde_json",
@@ -4509,10 +4511,19 @@ dependencies = [
"unicode-segmentation",
]
+[[package]]
+name = "sqlquack-syntax-bigquery"
+version = "0.2.0"
+source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=edfa30b26a0bab86661f96490b86a4f24b92db0a#edfa30b26a0bab86661f96490b86a4f24b92db0a"
+dependencies = [
+ "sqlquack-syntax",
+ "stacker",
+]
+
[[package]]
name = "sqlquack-syntax-derive"
version = "0.2.0"
-source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=4d0c6bc56da0e44eb164601a2af673ae7998257d#4d0c6bc56da0e44eb164601a2af673ae7998257d"
+source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=edfa30b26a0bab86661f96490b86a4f24b92db0a#edfa30b26a0bab86661f96490b86a4f24b92db0a"
dependencies = [
"proc-macro2",
"quote",
@@ -4522,9 +4533,10 @@ dependencies = [
[[package]]
name = "sqlquack-syntax-postgres"
version = "0.2.0"
-source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=4d0c6bc56da0e44eb164601a2af673ae7998257d#4d0c6bc56da0e44eb164601a2af673ae7998257d"
+source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=edfa30b26a0bab86661f96490b86a4f24b92db0a#edfa30b26a0bab86661f96490b86a4f24b92db0a"
dependencies = [
"sqlquack-syntax",
+ "stacker",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index f03cafe024..a7e15d357e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -176,9 +176,10 @@ sqlbuild-sqltext = { path = "crates/sqlbuild-sqltext" }
sqlbuild-state = { path = "crates/sqlbuild-state" }
# SQL lint Rules, quality Rules and the formatter.
sqlclean = { git = "https://github.com/sqlstack-io/sqlclean.git", rev = "cf79656d247277a30bc81ef39b6dee420e721221" }
-# The lossless SQL tokenizer behind query fingerprints.
-sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "4d0c6bc56da0e44eb164601a2af673ae7998257d" }
-sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "4d0c6bc56da0e44eb164601a2af673ae7998257d" }
+# SQLQuack's lossless tokenizer behind query fingerprints and its parsers for warehouse types.
+sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
+sqlquack-syntax-bigquery = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
+sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
stacker = "0.1"
syn = { version = "2", features = ["full", "visit", "extra-traits"] }
subtle = "2"
diff --git a/crates/sqlbuild-analysis/Cargo.toml b/crates/sqlbuild-analysis/Cargo.toml
index 80a5ae2313..3bae24f07f 100644
--- a/crates/sqlbuild-analysis/Cargo.toml
+++ b/crates/sqlbuild-analysis/Cargo.toml
@@ -27,7 +27,9 @@ sqlbuild-scopes.workspace = true
sqlbuild-sqltext.workspace = true
sqlclean.workspace = true
sqlquack-syntax.workspace = true
+sqlquack-syntax-bigquery.workspace = true
sqlquack-syntax-postgres.workspace = true
+stacker.workspace = true
[lints]
workspace = true
diff --git a/crates/sqlbuild-analysis/src/contracts/tests/test_evaluate_model_contracts.rs b/crates/sqlbuild-analysis/src/contracts/tests/test_evaluate_model_contracts.rs
index d1a7294798..4573a0010a 100644
--- a/crates/sqlbuild-analysis/src/contracts/tests/test_evaluate_model_contracts.rs
+++ b/crates/sqlbuild-analysis/src/contracts/tests/test_evaluate_model_contracts.rs
@@ -282,11 +282,11 @@ fn given_models_sharing_types_when_evaluating_together_then_each_matches_its_own
}
#[test]
-fn given_a_dialect_polyglot_does_not_know_when_comparing_types_then_python_error_is_returned() {
+fn given_a_dialect_no_adapter_ships_when_comparing_types_then_python_error_is_returned() {
let test_cases = [UnknownDialectTestCase {
description: "an enforced contract compared under an unknown dialect",
- dialect: "motherduck",
- expected_error: "Unknown dialect: motherduck",
+ dialect: "mysql",
+ expected_error: "Unknown dialect: mysql",
}];
for test_case in test_cases {
let request = ContractRequest {
diff --git a/crates/sqlbuild-analysis/src/lib.rs b/crates/sqlbuild-analysis/src/lib.rs
index 5ad16bf8b6..848c4de883 100644
--- a/crates/sqlbuild-analysis/src/lib.rs
+++ b/crates/sqlbuild-analysis/src/lib.rs
@@ -37,6 +37,7 @@ pub mod python_plan;
pub mod python_selection;
pub mod python_values;
pub mod query_analysis;
+pub mod relation_markers;
pub mod relation_names;
pub mod required_columns;
pub mod resource_diagnostics;
@@ -51,4 +52,5 @@ pub mod sql_tokens;
pub mod sql_tree;
pub mod target_paths;
pub mod type_system;
+pub mod warehouse_types;
pub mod worker_stack;
diff --git a/crates/sqlbuild-analysis/src/planner_strategy/main/classify_cursor_sql_type.rs b/crates/sqlbuild-analysis/src/planner_strategy/main/classify_cursor_sql_type.rs
index 22dedf16bd..1636707d0d 100644
--- a/crates/sqlbuild-analysis/src/planner_strategy/main/classify_cursor_sql_type.rs
+++ b/crates/sqlbuild-analysis/src/planner_strategy/main/classify_cursor_sql_type.rs
@@ -7,9 +7,9 @@ use crate::planner_strategy::_helpers::type_names::{argument, named_type};
use crate::planner_strategy::constants::{GENERIC_DIALECT, POLYGLOT_CUSTOM_TYPE_NAME};
use crate::planner_strategy::errors::TypeParseFailure;
use crate::planner_strategy::models::CursorType;
-use crate::type_system::main::polyglot_type_args::polyglot_type_args;
+use crate::type_system::main::type_args::type_args;
-/// Timestamp or integer for supported cross-adapter types; `Err` when Polyglot cannot parse an unknown type.
+/// Timestamp or integer for supported cross-adapter types; `Err` when an unknown type does not parse.
pub fn classify_cursor_sql_type(sql_type: &str) -> Result