Skip to content

Commit 8a61b3c

Browse files
committed
feat: add common Oracle operators and functions
1 parent 387ecf1 commit 8a61b3c

11 files changed

Lines changed: 183 additions & 1 deletion

File tree

src/types/oracle/emit.ts

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
type EmitConfig,
1616
type TypeEntry,
1717
} from "../emission/emit.ts";
18+
import type { EmitFn } from "../emission/facts.ts";
1819
import {
1920
introspect,
2021
ORACLE_CAST_TARGET,
@@ -61,6 +62,71 @@ const CONFIG: EmitConfig = {
6162
typeTable: new Map(TYPES.map((t) => [t.typname, t])),
6263
noMethod: new Set(["coalesce", "in"]),
6364
};
65+
66+
// Oracle's catalogs describe ordinary functions well, but expose
67+
// operators as undocumented optimizer names and leave a few ubiquitous
68+
// functions untyped. Keep this deliberately small and SQL-verified.
69+
const ORACLE_SUPPLEMENT: EmitFn[] = [
70+
...["+", "-", "*", "/"].map((sql): EmitFn => ({
71+
sql,
72+
kind: "binop",
73+
overloads: ["number", "binary_float", "binary_double"].map((type) => ({
74+
args: [{ type }, { type }], returns: type, nullability: "propagates",
75+
})),
76+
})),
77+
{
78+
sql: "-", kind: "unaryop",
79+
overloads: ["number", "binary_float", "binary_double"].map((type) => ({
80+
args: [{ type }], returns: type, nullability: "propagates",
81+
})),
82+
},
83+
{
84+
sql: "+", kind: "binop",
85+
overloads: [
86+
{ args: [{ type: "date" }, { type: "number" }], returns: "date", nullability: "propagates" },
87+
{ args: [{ type: "timestamp" }, { type: "intervalds" }], returns: "timestamp", nullability: "propagates" },
88+
],
89+
},
90+
{
91+
sql: "-", kind: "binop",
92+
overloads: [
93+
{ args: [{ type: "date" }, { type: "number" }], returns: "date", nullability: "propagates" },
94+
{ args: [{ type: "date" }, { type: "date" }], returns: "number", nullability: "propagates" },
95+
{ args: [{ type: "timestamp" }, { type: "timestamp" }], returns: "intervalds", nullability: "propagates" },
96+
{ args: [{ type: "timestamp" }, { type: "intervalds" }], returns: "timestamp", nullability: "propagates" },
97+
],
98+
},
99+
...["LIKE", "NOT LIKE"].map((sql): EmitFn => ({
100+
sql,
101+
kind: "binop",
102+
overloads: [{
103+
args: [{ type: "varchar2" }, { type: "varchar2" }],
104+
returns: "bool",
105+
nullability: "propagates",
106+
}],
107+
})),
108+
{
109+
sql: "LNNVL", kind: "scalar",
110+
overloads: [{ args: [{ type: "bool" }], returns: "bool", nullability: "never" }],
111+
},
112+
{
113+
sql: "WIDTH_BUCKET", kind: "scalar",
114+
overloads: [{
115+
args: ["number", "number", "number", "number"].map((type) => ({ type })),
116+
returns: "number",
117+
nullability: "propagates",
118+
}],
119+
},
120+
{
121+
sql: "NVL2", kind: "scalar",
122+
overloads: ["number", "varchar2", "bool"].map((type) => ({
123+
args: [{ type: "any" }, { type }, { type }],
124+
returns: type,
125+
nullability: "propagates" as const,
126+
nullPositions: [1, 2],
127+
})),
128+
},
129+
];
64130
const OVERRIDE_NAMES = scanOverrideNames(OVERRIDES_DIR);
65131

66132
const chromeFor = (typname: OracleTypname): ClassChrome => {
@@ -95,7 +161,7 @@ export const generate = async (): Promise<void> => {
95161
generatedDir: GENERATED_DIR,
96162
barrelPath: TYPES_INDEX,
97163
types: TYPES,
98-
facts: await introspect(conn),
164+
facts: [...await introspect(conn), ...ORACLE_SUPPLEMENT],
99165
cfg: CONFIG,
100166
chromeFor: (t) => chromeFor(t.typname as OracleTypname),
101167
overrides: OVERRIDE_NAMES,

src/types/oracle/generated/any.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,9 @@ export class Any<in out N extends number> extends SqlValue<N> {
131131
['>=']<M0 extends types.Any<any> | number | string | boolean | Uint8Array>(arg0: M0): types.Bool<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Any, allowPrimitive: true }], types.Bool]]); return runtime.opCall(runtime.sql`>=`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
132132
@expose.unchecked()
133133
gte<M0 extends types.Any<any> | number | string | boolean | Uint8Array>(arg0: M0): types.Bool<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Any, allowPrimitive: true }], types.Bool]]); return runtime.opCall(runtime.sql`>=`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
134+
nvl2<M0 extends types.Number<any> | number, M1 extends types.Number<any> | number>(arg0: M0, arg1: M1): types.Number<runtime.StrictNull<runtime.NullOf<M0> | runtime.NullOf<M1>>>;
135+
nvl2<M0 extends types.Varchar2<any> | string, M1 extends types.Varchar2<any> | string>(arg0: M0, arg1: M1): types.Varchar2<runtime.StrictNull<runtime.NullOf<M0> | runtime.NullOf<M1>>>;
136+
nvl2<M0 extends types.Bool<any> | boolean, M1 extends types.Bool<any> | boolean>(arg0: M0, arg1: M1): types.Bool<runtime.StrictNull<runtime.NullOf<M0> | runtime.NullOf<M1>>>;
137+
@expose.unchecked()
138+
nvl2(arg0: unknown, arg1: unknown): any { const [__rt, ...__rest] = runtime.match([arg0, arg1], [[[{ type: types.Number, allowPrimitive: true }, { type: types.Number, allowPrimitive: true }], types.Number], [[{ type: types.Varchar2, allowPrimitive: true }, { type: types.Varchar2, allowPrimitive: true }], types.Varchar2], [[{ type: types.Bool, allowPrimitive: true }, { type: types.Bool, allowPrimitive: true }], types.Bool]]); return runtime.funcCall("NVL2", [this, ...__rest], __rt) as any; }
134139
}

src/types/oracle/generated/binary_double.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,22 @@ export class BinaryDouble<in out N extends number> extends Any<N> {
8383
toNchar(arg0: unknown, arg1?: unknown): any { const [__rt, ...__rest] = runtime.match([arg0, arg1], [[[{ type: types.Nvarchar2, allowPrimitive: true }], types.Nvarchar2], [[{ type: types.Nvarchar2, allowPrimitive: true }, { type: types.Nvarchar2, allowPrimitive: true }], types.Nvarchar2]]); return runtime.funcCall("TO_NCHAR", [this, ...__rest], __rt) as any; }
8484
@expose.unchecked()
8585
trunc(): types.BinaryDouble<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.BinaryDouble]]); return runtime.funcCall("TRUNC", [this, ...__rest], __rt) as any; }
86+
@expose.unchecked()
87+
['+']<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
88+
@expose.unchecked()
89+
plus<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
90+
@expose.unchecked()
91+
['-']<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
92+
@expose.unchecked()
93+
minus<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
94+
@expose.unchecked()
95+
['*']<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
96+
@expose.unchecked()
97+
times<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
98+
@expose.unchecked()
99+
['/']<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
100+
@expose.unchecked()
101+
divide<M0 extends types.BinaryDouble<any> | number>(arg0: M0): types.BinaryDouble<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryDouble, allowPrimitive: true }], types.BinaryDouble]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
102+
@expose.unchecked()
103+
negate(): types.BinaryDouble<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.BinaryDouble]]); return runtime.unaryOpCall(runtime.sql`-`, this, __rt) as any; }
86104
}

src/types/oracle/generated/binary_float.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,22 @@ export class BinaryFloat<in out N extends number> extends Any<N> {
5555
toNchar(arg0: unknown, arg1?: unknown): any { const [__rt, ...__rest] = runtime.match([arg0, arg1], [[[{ type: types.Nvarchar2, allowPrimitive: true }], types.Nvarchar2], [[{ type: types.Nvarchar2, allowPrimitive: true }, { type: types.Nvarchar2, allowPrimitive: true }], types.Nvarchar2]]); return runtime.funcCall("TO_NCHAR", [this, ...__rest], __rt) as any; }
5656
@expose.unchecked()
5757
trunc(): types.BinaryFloat<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.BinaryFloat]]); return runtime.funcCall("TRUNC", [this, ...__rest], __rt) as any; }
58+
@expose.unchecked()
59+
['+']<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
60+
@expose.unchecked()
61+
plus<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
62+
@expose.unchecked()
63+
['-']<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
64+
@expose.unchecked()
65+
minus<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
66+
@expose.unchecked()
67+
['*']<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
68+
@expose.unchecked()
69+
times<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
70+
@expose.unchecked()
71+
['/']<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
72+
@expose.unchecked()
73+
divide<M0 extends types.BinaryFloat<any> | number>(arg0: M0): types.BinaryFloat<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.BinaryFloat, allowPrimitive: true }], types.BinaryFloat]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
74+
@expose.unchecked()
75+
negate(): types.BinaryFloat<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.BinaryFloat]]); return runtime.unaryOpCall(runtime.sql`-`, this, __rt) as any; }
5876
}

src/types/oracle/generated/bool.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ export class Bool<in out N extends number> extends Any<N> {
2525
nvl<M0 extends types.Bool<any> | boolean>(arg0: M0): types.Bool<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Bool, allowPrimitive: true }], types.Bool]]); return runtime.funcCall("NVL", [this, ...__rest], __rt) as any; }
2626
@expose.unchecked()
2727
toBoolean(): types.Bool<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.Bool]]); return runtime.funcCall("TO_BOOLEAN", [this, ...__rest], __rt) as any; }
28+
@expose.unchecked()
29+
lnnvl(): types.Bool<1> { const [__rt, ...__rest] = runtime.match([], [[[], types.Bool]]); return runtime.funcCall("LNNVL", [this, ...__rest], __rt) as any; }
2830
}

src/types/oracle/generated/date.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,16 @@ export class Date<in out N extends number> extends Any<N> {
245245
trunc(arg0?: unknown): any { const [__rt, ...__rest] = runtime.match([arg0], [[[], types.Date], [[{ type: types.Varchar2, allowPrimitive: true }], types.Date]]); return runtime.funcCall("TRUNC", [this, ...__rest], __rt) as any; }
246246
@expose.unchecked()
247247
vsize(): types.Number<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.Number]]); return runtime.funcCall("VSIZE", [this, ...__rest], __rt) as any; }
248+
@expose.unchecked()
249+
['+']<M0 extends types.Number<any> | number>(arg0: M0): types.Date<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Date]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
250+
@expose.unchecked()
251+
plus<M0 extends types.Number<any> | number>(arg0: M0): types.Date<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Date]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
252+
['-']<M0 extends types.Number<any> | number>(arg0: M0): types.Date<runtime.StrictNull<N | runtime.NullOf<M0>>>;
253+
['-']<M0 extends types.Date<any> | string>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>>;
254+
@expose.unchecked()
255+
['-'](arg0: unknown): any { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Date], [[{ type: types.Date, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
256+
minus<M0 extends types.Number<any> | number>(arg0: M0): types.Date<runtime.StrictNull<N | runtime.NullOf<M0>>>;
257+
minus<M0 extends types.Date<any> | string>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>>;
258+
@expose.unchecked()
259+
minus(arg0: unknown): any { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Date], [[{ type: types.Date, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
248260
}

src/types/oracle/generated/number.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,24 @@ export class Number<in out N extends number> extends Any<N> {
140140
trunc(arg0?: unknown): any { const [__rt, ...__rest] = runtime.match([arg0], [[[], types.Number], [[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.funcCall("TRUNC", [this, ...__rest], __rt) as any; }
141141
@expose.unchecked()
142142
vsize(): types.Number<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.Number]]); return runtime.funcCall("VSIZE", [this, ...__rest], __rt) as any; }
143+
@expose.unchecked()
144+
['+']<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
145+
@expose.unchecked()
146+
plus<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`+`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
147+
@expose.unchecked()
148+
['-']<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
149+
@expose.unchecked()
150+
minus<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`-`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
151+
@expose.unchecked()
152+
['*']<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
153+
@expose.unchecked()
154+
times<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`*`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
155+
@expose.unchecked()
156+
['/']<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
157+
@expose.unchecked()
158+
divide<M0 extends types.Number<any> | number>(arg0: M0): types.Number<runtime.StrictNull<N | runtime.NullOf<M0>>> { const [__rt, ...__rest] = runtime.match([arg0], [[[{ type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.opCall(runtime.sql`/`, [this, ...__rest] as [unknown, unknown], __rt) as any; }
159+
@expose.unchecked()
160+
negate(): types.Number<N> { const [__rt, ...__rest] = runtime.match([], [[[], types.Number]]); return runtime.unaryOpCall(runtime.sql`-`, this, __rt) as any; }
161+
@expose.unchecked()
162+
widthBucket<M0 extends types.Number<any> | number, M1 extends types.Number<any> | number, M2 extends types.Number<any> | number>(arg0: M0, arg1: M1, arg2: M2): types.Number<runtime.StrictNull<N | runtime.NullOf<M0> | runtime.NullOf<M1> | runtime.NullOf<M2>>> { const [__rt, ...__rest] = runtime.match([arg0, arg1, arg2], [[[{ type: types.Number, allowPrimitive: true }, { type: types.Number, allowPrimitive: true }, { type: types.Number, allowPrimitive: true }], types.Number]]); return runtime.funcCall("WIDTH_BUCKET", [this, ...__rest], __rt) as any; }
143163
}

0 commit comments

Comments
 (0)