diff --git a/packages/sqltree/src/dumpSqlCondition.ts b/packages/sqltree/src/dumpSqlCondition.ts index a95fa86f4..96798e4b4 100644 --- a/packages/sqltree/src/dumpSqlCondition.ts +++ b/packages/sqltree/src/dumpSqlCondition.ts @@ -72,6 +72,10 @@ export function dumpSqlCondition(dmp: SqlDumper, condition: Condition) { dumpSqlExpression(dmp, condition.expr); dmp.put(' ^in (%,v)', condition.values); break; + case 'notIn': + dumpSqlExpression(dmp, condition.expr); + dmp.put(' ^not ^in (%,v)', condition.values); + break; case 'rawTemplate': let was = false; for (const item of condition.templateSql.split('$$')) { diff --git a/packages/sqltree/src/types.ts b/packages/sqltree/src/types.ts index cda154a7f..ed72f33ca 100644 --- a/packages/sqltree/src/types.ts +++ b/packages/sqltree/src/types.ts @@ -106,6 +106,12 @@ export interface InCondition { values: any[]; } +export interface NotInCondition { + conditionType: 'notIn'; + expr: Expression; + values: any[]; +} + export interface RawTemplateCondition { conditionType: 'rawTemplate'; templateSql: string; @@ -127,6 +133,7 @@ export type Condition = | NotExistsCondition | BetweenCondition | InCondition + | NotInCondition | RawTemplateCondition | AnyColumnPassEvalOnlyCondition;