Skip to content

Commit 22ad8b5

Browse files
committed
revert: remove unproven hot-path optimizations
1 parent b9213a1 commit 22ad8b5

19 files changed

Lines changed: 215 additions & 220 deletions

File tree

sqlspec/builder/_explain.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
dialect-aware SQL generation.
55
"""
66

7-
from typing import TYPE_CHECKING, Any, Final
7+
from typing import TYPE_CHECKING, Any
88

99
from mypy_extensions import trait
1010
from sqlglot import Dialect
@@ -44,12 +44,6 @@
4444
ORACLE_DIALECTS = frozenset({"oracle"})
4545
BIGQUERY_DIALECTS = frozenset({"bigquery"})
4646
SPANNER_DIALECTS = frozenset({"spanner"})
47-
_MYSQL_EXPLAIN_FORMAT_MAP: Final[dict[ExplainFormat, str]] = {
48-
ExplainFormat.JSON: "JSON",
49-
ExplainFormat.TREE: "TREE",
50-
ExplainFormat.TRADITIONAL: "TRADITIONAL",
51-
ExplainFormat.TEXT: "TRADITIONAL",
52-
}
5347

5448

5549
def normalize_dialect_name(dialect: "DialectType | None") -> str | None:
@@ -131,7 +125,13 @@ def build_mysql_explain(statement_sql: str, options: "ExplainOptions") -> str:
131125
return f"EXPLAIN ANALYZE {statement_sql}"
132126

133127
if options.format is not None:
134-
fmt = _MYSQL_EXPLAIN_FORMAT_MAP.get(options.format, "TRADITIONAL")
128+
format_map = {
129+
ExplainFormat.JSON: "JSON",
130+
ExplainFormat.TREE: "TREE",
131+
ExplainFormat.TRADITIONAL: "TRADITIONAL",
132+
ExplainFormat.TEXT: "TRADITIONAL",
133+
}
134+
fmt = format_map.get(options.format, "TRADITIONAL")
135135
return f"EXPLAIN FORMAT = {fmt} {statement_sql}"
136136

137137
return f"EXPLAIN {statement_sql}"

sqlspec/builder/_factory.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import hashlib
77
import logging
8-
from typing import TYPE_CHECKING, Any, Final, TypeVar, Union, cast, final
8+
from typing import TYPE_CHECKING, Any, TypeVar, Union, cast, final
99

1010
import sqlglot
1111
from sqlglot import exp
@@ -96,7 +96,6 @@
9696

9797
MIN_SQL_LIKE_STRING_LENGTH = 6
9898
MIN_DECODE_ARGS = 2
99-
_MERGE_SUPPORTED_DIALECTS: Final[frozenset[str]] = frozenset({"postgres", "postgresql", "oracle", "bigquery"})
10099
SQL_STARTERS = {
101100
"SELECT",
102101
"INSERT",
@@ -283,7 +282,15 @@ def __call__(self, statement: str, dialect: DialectType = None) -> "Any":
283282
msg = f"Failed to parse SQL: {e}"
284283
raise SQLBuilderError(msg) from e
285284
actual_type = type(parsed_expr).__name__.upper()
286-
actual_type_str = actual_type
285+
expr_type_map = {
286+
"SELECT": "SELECT",
287+
"INSERT": "INSERT",
288+
"UPDATE": "UPDATE",
289+
"DELETE": "DELETE",
290+
"MERGE": "MERGE",
291+
"WITH": "WITH",
292+
}
293+
actual_type_str = expr_type_map.get(actual_type, actual_type)
287294
if actual_type_str == "SELECT" or (
288295
actual_type_str == "WITH" and parsed_expr.this and isinstance(parsed_expr.this, exp.Select)
289296
):
@@ -453,7 +460,9 @@ def upsert(self, table: str, dialect: DialectType = None) -> "Merge | Insert":
453460
builder_dialect = dialect or self.dialect
454461
dialect_str = str(builder_dialect).lower() if builder_dialect else None
455462

456-
if dialect_str in _MERGE_SUPPORTED_DIALECTS:
463+
merge_supported = {"postgres", "postgresql", "oracle", "bigquery"}
464+
465+
if dialect_str in merge_supported:
457466
return self.merge(table, dialect=builder_dialect)
458467

459468
return self.insert(table, dialect=builder_dialect)

sqlspec/builder/_vector_distance.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,24 +34,6 @@
3434
_ORACLE_OPERATOR_TRANSFORM: _OperatorTransform | None = None
3535
_BIGQUERY_OPERATOR_TRANSFORM: _OperatorTransform | None = None
3636
_DUCKDB_OPERATOR_TRANSFORM: _OperatorTransform | None = None
37-
_POSTGRES_VECTOR_OPERATOR_MAP: Final[dict[str, str]] = {"euclidean": "<->", "cosine": "<=>", "inner_product": "<#>"}
38-
_MYSQL_VECTOR_METRIC_MAP: Final[dict[str, str]] = {"euclidean": "EUCLIDEAN", "cosine": "COSINE", "inner_product": "DOT"}
39-
_ORACLE_VECTOR_METRIC_MAP: Final[dict[str, str]] = {
40-
"euclidean": "EUCLIDEAN",
41-
"cosine": "COSINE",
42-
"inner_product": "DOT",
43-
"euclidean_squared": "EUCLIDEAN_SQUARED",
44-
}
45-
_BIGQUERY_VECTOR_FUNCTION_MAP: Final[dict[str, str]] = {
46-
"euclidean": "EUCLIDEAN_DISTANCE",
47-
"cosine": "COSINE_DISTANCE",
48-
"inner_product": "DOT_PRODUCT",
49-
}
50-
_DUCKDB_VECTOR_FUNCTION_MAP: Final[dict[str, str]] = {
51-
"euclidean": "array_distance",
52-
"cosine": "array_cosine_distance",
53-
"inner_product": "array_negative_inner_product",
54-
}
5537

5638

5739
def is_vector_distance_expression(expression: object) -> bool:
@@ -108,7 +90,9 @@ def VectorDistance(*, this: exp.Expr, expression: exp.Expr, metric: Any = "eucli
10890

10991
def render_vector_distance_postgres(left: str, right: str, metric: str) -> str:
11092
"""Render PostgreSQL pgvector operator syntax."""
111-
operator = _POSTGRES_VECTOR_OPERATOR_MAP.get(metric)
93+
operator_map = {"euclidean": "<->", "cosine": "<=>", "inner_product": "<#>"}
94+
95+
operator = operator_map.get(metric)
11296
if operator:
11397
return f"{left} {operator} {right}"
11498

@@ -117,7 +101,9 @@ def render_vector_distance_postgres(left: str, right: str, metric: str) -> str:
117101

118102
def render_vector_distance_mysql(left: str, right: str, metric: str) -> str:
119103
"""Render MySQL DISTANCE function syntax."""
120-
mysql_metric = _MYSQL_VECTOR_METRIC_MAP.get(metric, "EUCLIDEAN")
104+
metric_map = {"euclidean": "EUCLIDEAN", "cosine": "COSINE", "inner_product": "DOT"}
105+
106+
mysql_metric = metric_map.get(metric, "EUCLIDEAN")
121107

122108
if ("ARRAY" in right or "[" in right) and "STRING_TO_VECTOR" not in right:
123109
right = f"STRING_TO_VECTOR({right})"
@@ -127,7 +113,14 @@ def render_vector_distance_mysql(left: str, right: str, metric: str) -> str:
127113

128114
def render_vector_distance_oracle(left: str, right: str, metric: str) -> str:
129115
"""Render Oracle VECTOR_DISTANCE function syntax."""
130-
oracle_metric = _ORACLE_VECTOR_METRIC_MAP.get(metric, "EUCLIDEAN")
116+
metric_map = {
117+
"euclidean": "EUCLIDEAN",
118+
"cosine": "COSINE",
119+
"inner_product": "DOT",
120+
"euclidean_squared": "EUCLIDEAN_SQUARED",
121+
}
122+
123+
oracle_metric = metric_map.get(metric, "EUCLIDEAN")
131124

132125
if ("[" in right or "ARRAY" in right) and "TO_VECTOR" not in right:
133126
right = f"TO_VECTOR({right})"
@@ -137,7 +130,9 @@ def render_vector_distance_oracle(left: str, right: str, metric: str) -> str:
137130

138131
def render_vector_distance_bigquery(left: str, right: str, metric: str) -> str:
139132
"""Render BigQuery vector distance function syntax."""
140-
function_name = _BIGQUERY_VECTOR_FUNCTION_MAP.get(metric)
133+
function_map = {"euclidean": "EUCLIDEAN_DISTANCE", "cosine": "COSINE_DISTANCE", "inner_product": "DOT_PRODUCT"}
134+
135+
function_name = function_map.get(metric)
141136
if function_name:
142137
return f"{function_name}({left}, {right})"
143138

@@ -146,7 +141,12 @@ def render_vector_distance_bigquery(left: str, right: str, metric: str) -> str:
146141

147142
def render_vector_distance_duckdb(left: str, right: str, metric: str, *, dimension: int | None = None) -> str:
148143
"""Render DuckDB VSS extension function syntax."""
149-
function_name = _DUCKDB_VECTOR_FUNCTION_MAP.get(metric)
144+
function_map = {
145+
"euclidean": "array_distance",
146+
"cosine": "array_cosine_distance",
147+
"inner_product": "array_negative_inner_product",
148+
}
149+
function_name = function_map.get(metric)
150150
if function_name:
151151
target_type = f"DOUBLE[{dimension}]" if dimension is not None else "DOUBLE[]"
152152
return f"{function_name}({left}, CAST({right} AS {target_type}))"

0 commit comments

Comments
 (0)