Skip to content

Commit 10f47a1

Browse files
committed
fix: thread dialect through schemaOrEmpty into all six native handlers
The dialect parameter was passed through the tool layer but dropped at the schema resolution step. Six native handlers (validate, check, fix, semantics, equivalence, correct) called schemaOrEmpty() without dialect, so the fallback empty schema always used the default dialect. Fix: add optional dialect param to schemaOrEmpty() and pass it to Schema.fromDdl(). Update all six handlers to forward params.dialect. Co-Authored-By: Vijay Yadav <vjyadav194@gmail.com>
1 parent 6edf2e5 commit 10f47a1

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

packages/opencode/src/altimate/native/altimate-core.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export function registerAll(): void {
8888
// 1. altimate_core.validate
8989
register("altimate_core.validate", async (params) => {
9090
try {
91-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
91+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
9292
const raw = await core.validate(params.sql, schema)
9393
const data = toData(raw)
9494
return ok(true, data)
@@ -167,7 +167,7 @@ export function registerAll(): void {
167167
// 6. altimate_core.check — composite: validate + lint + scan_sql
168168
register("altimate_core.check", async (params) => {
169169
try {
170-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
170+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
171171
const validation = await core.validate(params.sql, schema)
172172
const lintResult = core.lint(params.sql, schema)
173173
const safety = core.scanSql(params.sql)
@@ -185,7 +185,7 @@ export function registerAll(): void {
185185
// 7. altimate_core.fix
186186
register("altimate_core.fix", async (params) => {
187187
try {
188-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
188+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
189189
const raw = await core.fix(params.sql, schema, params.max_iterations ?? undefined)
190190
const data = toData(raw)
191191
return ok(true, data)
@@ -209,7 +209,7 @@ export function registerAll(): void {
209209
// 9. altimate_core.semantics
210210
register("altimate_core.semantics", async (params) => {
211211
try {
212-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
212+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
213213
const raw = await core.checkSemantics(params.sql, schema)
214214
const data = toData(raw)
215215
return ok(true, data)
@@ -232,7 +232,7 @@ export function registerAll(): void {
232232
// 11. altimate_core.equivalence
233233
register("altimate_core.equivalence", async (params) => {
234234
try {
235-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
235+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
236236
const raw = await core.checkEquivalence(params.sql1, params.sql2, schema)
237237
const data = toData(raw)
238238
return ok(true, data)
@@ -280,7 +280,7 @@ export function registerAll(): void {
280280
// 15. altimate_core.correct
281281
register("altimate_core.correct", async (params) => {
282282
try {
283-
const schema = schemaOrEmpty(params.schema_path, params.schema_context)
283+
const schema = schemaOrEmpty(params.schema_path, params.schema_context, params.dialect)
284284
const raw = await core.correct(params.sql, schema)
285285
const data = toData(raw)
286286
return ok(true, data)

packages/opencode/src/altimate/native/schema-resolver.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,15 @@ export function resolveSchema(
111111
/**
112112
* Resolve a Schema, falling back to a minimal empty schema when none is provided.
113113
* Use this for functions that require a non-null Schema argument.
114+
* When a dialect is provided, it is passed to Schema.fromDdl() so the fallback
115+
* empty schema uses the correct SQL dialect for validation/analysis.
114116
*/
115117
export function schemaOrEmpty(
116118
schemaPath?: string,
117119
schemaContext?: Record<string, any>,
120+
dialect?: string,
118121
): Schema {
119122
const s = resolveSchema(schemaPath, schemaContext)
120123
if (s !== null) return s
121-
return Schema.fromDdl("CREATE TABLE _empty_ (id INT);")
124+
return Schema.fromDdl("CREATE TABLE _empty_ (id INT);", dialect || undefined)
122125
}

0 commit comments

Comments
 (0)