@memberjunction/generic-database-provider 5.36.0 → 5.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,6 +41,67 @@ export declare class QueryPagingEngine {
41
41
  * @returns DataSQL for paged results and CountSQL for total row count
42
42
  */
43
43
  static WrapWithPaging(resolvedSQL: string, startRow: number, maxRows: number, platform: DatabasePlatform): PagingWrappedSQL;
44
+ /**
45
+ * Applies a row cap to the outermost SELECT.
46
+ *
47
+ * `maxRows` is treated as a hard ceiling: the result is guaranteed to
48
+ * return at most `maxRows` rows whenever the SQL shape can be capped
49
+ * without corrupting the query.
50
+ *
51
+ * Strategy:
52
+ * 1. Parse via AST. If the outermost SELECT has no existing cap,
53
+ * inject `TOP N` (SQL Server) or `LIMIT N` (PostgreSQL).
54
+ * 2. If an existing numeric `TOP`/`LIMIT` is present, reduce it to
55
+ * `min(existing, maxRows)`. The tighter cap wins.
56
+ * 3. If the AST recognizes the shape but can't inject (`TOP PERCENT`,
57
+ * non-numeric `TOP`, `UNION`, `WITH TIES`, etc.), wrap with an
58
+ * outer `SELECT TOP N * FROM (…) AS _mj_capped` (or LIMIT on PG).
59
+ * 4. If the parser can't handle the input but the SQL is CTE-headed,
60
+ * append `OFFSET 0 ROWS FETCH NEXT N ROWS ONLY` via {@link buildDataSQL}.
61
+ * 5. Shapes that can't legally appear inside a derived table
62
+ * (`FOR JSON`, `FOR XML`, `OPTION (...)`, `SELECT INTO`,
63
+ * mutations) are returned unchanged — the cap is moot
64
+ * (FOR JSON/XML return one row) or the validator should have
65
+ * rejected them earlier (mutations, SELECT INTO).
66
+ *
67
+ * Non-positive, non-finite, or fractional `maxRows` are sanitized
68
+ * (`<= 0` and non-finite are no-ops; fractional values are floored).
69
+ */
70
+ static WrapWithMaxRows(resolvedSQL: string, maxRows: number, platform: DatabasePlatform): string;
71
+ /**
72
+ * Wraps `sql` in an outer SELECT that enforces the row cap.
73
+ * Used when the AST recognises the shape but cannot inject the cap
74
+ * cleanly, or when the AST can't parse the input but the SQL is known
75
+ * to be wrap-safe (no FOR JSON/FOR XML/OPTION at top level).
76
+ */
77
+ private static outerWrap;
78
+ /**
79
+ * Token-aware scan for clauses that cannot legally appear inside a
80
+ * derived table — wrapping such a query would produce invalid SQL.
81
+ *
82
+ * Detects (case-insensitive, outside string literals and quoted
83
+ * identifiers):
84
+ * - `FOR JSON …`
85
+ * - `FOR XML …`
86
+ * - `OPTION (…)`
87
+ *
88
+ * `SELECT INTO` and mutations are handled separately via the AST
89
+ * (`applyMaxRowsViaAST` returns `pass-through` for those).
90
+ */
91
+ private static containsUnwrappableClause;
92
+ /**
93
+ * AST-based row-cap injection.
94
+ * `capped` — `sql` contains the input with TOP/LIMIT injected
95
+ * or reduced to `min(existing, cap)`.
96
+ * `wrap` — AST recognized the shape but the cap can't be
97
+ * safely injected inline (`TOP PERCENT`, non-numeric
98
+ * `TOP`/`LIMIT`); caller should outer-wrap.
99
+ * `pass-through` — shape can't be capped at all without corrupting
100
+ * the query (SELECT INTO, mutation).
101
+ * `unparseable` — parser could not handle the input; caller may
102
+ * attempt a CTE-fallback or outer wrap.
103
+ */
104
+ private static applyMaxRowsViaAST;
44
105
  /**
45
106
  * Determines whether the given params indicate paging should be applied.
46
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queryPagingEngine.d.ts","sourceRoot":"","sources":["../src/queryPagingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAiB;IAE1B;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAC3B,gBAAgB;IAUnB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAQrF,OAAO,CAAC,MAAM,CAAC,YAAY;IAyB3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAoBrC,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA8BlC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAsBpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,UAAU,GAAG,MAA+B,GACtD;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAW5D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE;IAOxE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B,OAAO,CAAC,MAAM,CAAC,UAAU;CAG5B"}
1
+ {"version":3,"file":"queryPagingEngine.d.ts","sourceRoot":"","sources":["../src/queryPagingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAiB;IAE1B;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAC3B,gBAAgB;IAUnB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,eAAe,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAC3B,MAAM;IAsCT;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAwDxC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiFjC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAQrF,OAAO,CAAC,MAAM,CAAC,YAAY;IAyB3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAoBrC,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA8BlC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAsBpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,UAAU,GAAG,MAA+B,GACtD;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAW5D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE;IAOxE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B,OAAO,CAAC,MAAM,CAAC,UAAU;CAG5B"}
@@ -34,6 +34,237 @@ export class QueryPagingEngine {
34
34
  const countSQL = QueryPagingEngine.buildCountSQL(cleanedSQL, dialect);
35
35
  return { DataSQL: dataSQL, CountSQL: countSQL, Offset: startRow, PageSize: maxRows };
36
36
  }
37
+ /**
38
+ * Applies a row cap to the outermost SELECT.
39
+ *
40
+ * `maxRows` is treated as a hard ceiling: the result is guaranteed to
41
+ * return at most `maxRows` rows whenever the SQL shape can be capped
42
+ * without corrupting the query.
43
+ *
44
+ * Strategy:
45
+ * 1. Parse via AST. If the outermost SELECT has no existing cap,
46
+ * inject `TOP N` (SQL Server) or `LIMIT N` (PostgreSQL).
47
+ * 2. If an existing numeric `TOP`/`LIMIT` is present, reduce it to
48
+ * `min(existing, maxRows)`. The tighter cap wins.
49
+ * 3. If the AST recognizes the shape but can't inject (`TOP PERCENT`,
50
+ * non-numeric `TOP`, `UNION`, `WITH TIES`, etc.), wrap with an
51
+ * outer `SELECT TOP N * FROM (…) AS _mj_capped` (or LIMIT on PG).
52
+ * 4. If the parser can't handle the input but the SQL is CTE-headed,
53
+ * append `OFFSET 0 ROWS FETCH NEXT N ROWS ONLY` via {@link buildDataSQL}.
54
+ * 5. Shapes that can't legally appear inside a derived table
55
+ * (`FOR JSON`, `FOR XML`, `OPTION (...)`, `SELECT INTO`,
56
+ * mutations) are returned unchanged — the cap is moot
57
+ * (FOR JSON/XML return one row) or the validator should have
58
+ * rejected them earlier (mutations, SELECT INTO).
59
+ *
60
+ * Non-positive, non-finite, or fractional `maxRows` are sanitized
61
+ * (`<= 0` and non-finite are no-ops; fractional values are floored).
62
+ */
63
+ static WrapWithMaxRows(resolvedSQL, maxRows, platform) {
64
+ const cleanedSQL = resolvedSQL.trimEnd().replace(/;\s*$/, '');
65
+ if (!Number.isFinite(maxRows) || maxRows <= 0)
66
+ return cleanedSQL;
67
+ if (cleanedSQL.trim().length === 0)
68
+ return cleanedSQL;
69
+ const cap = Math.floor(maxRows);
70
+ const dialect = QueryPagingEngine.getDialect(platform);
71
+ const astResult = QueryPagingEngine.applyMaxRowsViaAST(cleanedSQL, cap, dialect);
72
+ if (astResult.outcome === 'capped')
73
+ return astResult.sql;
74
+ if (astResult.outcome === 'pass-through')
75
+ return cleanedSQL;
76
+ // Both `wrap` and `unparseable` outcomes may try the outer-wrap path.
77
+ // First, check for clauses that cannot legally appear inside a derived
78
+ // table — wrapping such queries would produce invalid SQL.
79
+ const unwrappable = QueryPagingEngine.containsUnwrappableClause(cleanedSQL);
80
+ if (astResult.outcome === 'wrap') {
81
+ if (unwrappable)
82
+ return cleanedSQL;
83
+ return QueryPagingEngine.outerWrap(cleanedSQL, cap, dialect);
84
+ }
85
+ // unparseable — try the CTE-fallback path first.
86
+ const isCTE = SQLParser.ExtractCTEs(cleanedSQL, dialect) !== null;
87
+ if (isCTE) {
88
+ try {
89
+ return QueryPagingEngine.buildDataSQL(cleanedSQL, 0, cap, dialect);
90
+ }
91
+ catch {
92
+ return cleanedSQL;
93
+ }
94
+ }
95
+ if (unwrappable)
96
+ return cleanedSQL;
97
+ return QueryPagingEngine.outerWrap(cleanedSQL, cap, dialect);
98
+ }
99
+ /**
100
+ * Wraps `sql` in an outer SELECT that enforces the row cap.
101
+ * Used when the AST recognises the shape but cannot inject the cap
102
+ * cleanly, or when the AST can't parse the input but the SQL is known
103
+ * to be wrap-safe (no FOR JSON/FOR XML/OPTION at top level).
104
+ */
105
+ static outerWrap(sql, cap, dialect) {
106
+ if (dialect.PlatformKey === 'sqlserver') {
107
+ return `SELECT TOP ${cap} * FROM (\n${sql}\n) AS _mj_capped`;
108
+ }
109
+ return `SELECT * FROM (\n${sql}\n) AS _mj_capped LIMIT ${cap}`;
110
+ }
111
+ /**
112
+ * Token-aware scan for clauses that cannot legally appear inside a
113
+ * derived table — wrapping such a query would produce invalid SQL.
114
+ *
115
+ * Detects (case-insensitive, outside string literals and quoted
116
+ * identifiers):
117
+ * - `FOR JSON …`
118
+ * - `FOR XML …`
119
+ * - `OPTION (…)`
120
+ *
121
+ * `SELECT INTO` and mutations are handled separately via the AST
122
+ * (`applyMaxRowsViaAST` returns `pass-through` for those).
123
+ */
124
+ static containsUnwrappableClause(sql) {
125
+ const len = sql.length;
126
+ let i = 0;
127
+ const isWordChar = (ch) => (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') ||
128
+ (ch >= '0' && ch <= '9') || ch === '_';
129
+ const isWS = (ch) => ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r';
130
+ const matchWord = (start, word) => {
131
+ if (start + word.length > len)
132
+ return false;
133
+ if (sql.substring(start, start + word.length).toUpperCase() !== word)
134
+ return false;
135
+ const after = start + word.length;
136
+ return after === len || !isWordChar(sql[after]);
137
+ };
138
+ while (i < len) {
139
+ const c = sql[i];
140
+ // Skip string literals and quoted identifiers (single quote,
141
+ // bracket, double quote — all support doubled-delimiter escapes).
142
+ if (c === "'" || c === '[' || c === '"') {
143
+ const close = c === '[' ? ']' : c;
144
+ i++;
145
+ while (i < len) {
146
+ if (sql[i] === close) {
147
+ if (sql[i + 1] === close) {
148
+ i += 2;
149
+ continue;
150
+ }
151
+ i++;
152
+ break;
153
+ }
154
+ i++;
155
+ }
156
+ continue;
157
+ }
158
+ const prevIsWord = i > 0 && isWordChar(sql[i - 1]);
159
+ if (!prevIsWord) {
160
+ if (matchWord(i, 'FOR')) {
161
+ let j = i + 3;
162
+ while (j < len && isWS(sql[j]))
163
+ j++;
164
+ if (matchWord(j, 'JSON') || matchWord(j, 'XML'))
165
+ return true;
166
+ }
167
+ if (matchWord(i, 'OPTION')) {
168
+ let j = i + 6;
169
+ while (j < len && isWS(sql[j]))
170
+ j++;
171
+ if (j < len && sql[j] === '(')
172
+ return true;
173
+ }
174
+ }
175
+ i++;
176
+ }
177
+ return false;
178
+ }
179
+ /**
180
+ * AST-based row-cap injection.
181
+ * `capped` — `sql` contains the input with TOP/LIMIT injected
182
+ * or reduced to `min(existing, cap)`.
183
+ * `wrap` — AST recognized the shape but the cap can't be
184
+ * safely injected inline (`TOP PERCENT`, non-numeric
185
+ * `TOP`/`LIMIT`); caller should outer-wrap.
186
+ * `pass-through` — shape can't be capped at all without corrupting
187
+ * the query (SELECT INTO, mutation).
188
+ * `unparseable` — parser could not handle the input; caller may
189
+ * attempt a CTE-fallback or outer wrap.
190
+ */
191
+ static applyMaxRowsViaAST(sql, cap, dialect) {
192
+ const ast = SQLParser.ParseSQL(sql, dialect);
193
+ if (!ast)
194
+ return { outcome: 'unparseable' };
195
+ const rootNode = Array.isArray(ast) ? ast[0] : ast;
196
+ if (!rootNode)
197
+ return { outcome: 'unparseable' };
198
+ const root = rootNode;
199
+ if (root.type !== 'select')
200
+ return { outcome: 'pass-through' };
201
+ const into = root.into;
202
+ if (into && into.position)
203
+ return { outcome: 'pass-through' };
204
+ if (root.set_op)
205
+ return { outcome: 'unparseable' };
206
+ // Existing TOP — reduce to min(existing, cap). PERCENT and non-numeric
207
+ // values (e.g. TOP (@n)) can't be reasoned about as row counts; let
208
+ // the caller outer-wrap them.
209
+ const existingTop = root.top;
210
+ if (existingTop != null) {
211
+ if (existingTop.percent)
212
+ return { outcome: 'wrap' };
213
+ const existingValue = typeof existingTop.value === 'number'
214
+ ? existingTop.value
215
+ : Number(existingTop.value);
216
+ if (!Number.isFinite(existingValue))
217
+ return { outcome: 'wrap' };
218
+ if (existingValue <= cap)
219
+ return { outcome: 'capped', sql };
220
+ root.top = { value: cap, percent: null };
221
+ try {
222
+ return { outcome: 'capped', sql: SQLParser.SqlifyAST(ast, dialect) };
223
+ }
224
+ catch {
225
+ return { outcome: 'unparseable' };
226
+ }
227
+ }
228
+ // Existing LIMIT — reduce the LIMIT value (preserves OFFSET).
229
+ // node-sql-parser shape for SQL Server / PostgreSQL:
230
+ // `LIMIT N` → value=[{value:N}], seperator=''
231
+ // `LIMIT N OFFSET M` → value=[{value:N},{value:M}], seperator='offset'
232
+ // The LIMIT value is always at index 0 for these dialects.
233
+ const existingLimit = root.limit;
234
+ if (existingLimit != null && Array.isArray(existingLimit.value) && existingLimit.value.length > 0) {
235
+ const limitNode = existingLimit.value[0];
236
+ const existingValue = typeof limitNode.value === 'number'
237
+ ? limitNode.value
238
+ : Number(limitNode.value);
239
+ if (!Number.isFinite(existingValue))
240
+ return { outcome: 'wrap' };
241
+ if (existingValue <= cap)
242
+ return { outcome: 'capped', sql };
243
+ existingLimit.value[0] = { type: 'number', value: cap };
244
+ try {
245
+ return { outcome: 'capped', sql: SQLParser.SqlifyAST(ast, dialect) };
246
+ }
247
+ catch {
248
+ return { outcome: 'unparseable' };
249
+ }
250
+ }
251
+ // No existing cap — inject one.
252
+ if (dialect.PlatformKey === 'sqlserver') {
253
+ root.top = { value: cap, percent: null };
254
+ }
255
+ else {
256
+ root.limit = {
257
+ seperator: '',
258
+ value: [{ type: 'number', value: cap }],
259
+ };
260
+ }
261
+ try {
262
+ return { outcome: 'capped', sql: SQLParser.SqlifyAST(ast, dialect) };
263
+ }
264
+ catch {
265
+ return { outcome: 'unparseable' };
266
+ }
267
+ }
37
268
  /**
38
269
  * Determines whether the given params indicate paging should be applied.
39
270
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queryPagingEngine.js","sourceRoot":"","sources":["../src/queryPagingEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queryPagingEngine.js","sourceRoot":"","sources":["../src/queryPagingEngine.ts"],"names":[],"mappings":"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"}
@@ -55,12 +55,12 @@ export interface RenderContext {
55
55
  * directly to processQueryTemplate for parameter validation. When omitted,
56
56
  * a synthetic QueryTemplateInput is built from OriginalSQL + ParameterDefinitions. */
57
57
  QueryInfo?: QueryTemplateInput;
58
- /** Paging parameters (omit to skip paging) */
58
+ /** Paging parameters (omit to skip paging). Mutually exclusive with {@link MaxRows}. */
59
59
  Paging?: {
60
60
  StartRow: number;
61
61
  MaxRows: number;
62
62
  };
63
- /** MaxRows safety limit for transient query testing */
63
+ /** MaxRows safety limit. Mutually exclusive with {@link Paging}. */
64
64
  MaxRows?: number;
65
65
  }
66
66
  /**
@@ -122,29 +122,5 @@ export declare class RenderPipeline {
122
122
  static HasCompositionTokens(sql: string): boolean;
123
123
  private static runComposition;
124
124
  private static runTemplates;
125
- /**
126
- * Injects a row-cap (`TOP N` for SQL Server, `LIMIT N` for Postgres) onto
127
- * the outermost SELECT of `sql`.
128
- *
129
- * Uses an AST-based rewrite so CTE queries (`WITH … SELECT …`), nested
130
- * subqueries, comments, and casing are all handled correctly. The cap is
131
- * applied to the outermost projection only, leaving any inner `TOP N` /
132
- * `LIMIT N` clauses inside CTE definitions or subqueries untouched.
133
- *
134
- * For shapes the parser can't represent at the top level
135
- * (UNION/INTERSECT/EXCEPT, vendor-specific T-SQL the parser rejects, sqlify
136
- * round-trip failures), falls back to wrapping the original SQL in
137
- * `SELECT TOP N * FROM (<original>) AS _capped` — always safe because the
138
- * inner SQL is treated as opaque.
139
- */
140
- private static applyMaxRows;
141
- private static applyMaxRowsViaAst;
142
- private static applyMaxRowsViaSubqueryWrap;
143
- private static getDialect;
144
- /**
145
- * Strips SQL comments (single-line -- and block comments) from a SQL string.
146
- * Preserves single-quoted string literals to avoid stripping inside them.
147
- */
148
- private static stripSQLComments;
149
125
  }
150
126
  //# sourceMappingURL=renderPipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderPipeline.d.ts","sourceRoot":"","sources":["../src/renderPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderPipeline.d.ts","sourceRoot":"","sources":["../src/renderPipeline.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,13 @@ export class RenderPipeline {
33
33
  * @returns Final SQL, applied parameters, composition metadata, and diagnostic trace
34
34
  */
35
35
  static Run(sql, ctx) {
36
+ const hasMaxRows = ctx.MaxRows != null && ctx.MaxRows > 0;
37
+ const hasPaging = ctx.Paging != null && QueryPagingEngine.ShouldPage(ctx.Paging.StartRow, ctx.Paging.MaxRows);
38
+ if (hasMaxRows && hasPaging) {
39
+ throw new Error('RenderPipeline.Run: ctx.MaxRows and ctx.Paging are mutually exclusive. ' +
40
+ 'Use Paging for pagination (StartRow + MaxRows) or MaxRows alone for a safety cap. ' +
41
+ `Got MaxRows=${ctx.MaxRows} and Paging=${JSON.stringify(ctx.Paging)}.`);
42
+ }
36
43
  let currentSQL = sql;
37
44
  let appliedParameters = {};
38
45
  // ── Step 1: Composition ──────────────────────────────────────
@@ -46,20 +53,20 @@ export class RenderPipeline {
46
53
  // Nunjucks. Strip them after composition (which correctly ignores
47
54
  // comment-embedded tokens) and before Nunjucks processes the SQL.
48
55
  // Comments are still visible in Trace.AfterComposition for debugging.
49
- currentSQL = RenderPipeline.stripSQLComments(currentSQL);
56
+ currentSQL = SQLParser.StripComments(currentSQL, GetDialect(ctx.Platform));
50
57
  // ── Step 2: Nunjucks template evaluation ─────────────────────
51
58
  const templateResult = RenderPipeline.runTemplates(currentSQL, sql, ctx, compositionResult);
52
59
  currentSQL = templateResult.processedSQL;
53
60
  appliedParameters = templateResult.appliedParameters;
54
61
  const afterTemplates = currentSQL;
55
62
  // ── Step 3: MaxRows safety limit (if specified) ──────────────
56
- if (ctx.MaxRows != null && ctx.MaxRows > 0) {
57
- currentSQL = RenderPipeline.applyMaxRows(currentSQL, ctx.MaxRows, ctx.Platform);
63
+ if (hasMaxRows) {
64
+ currentSQL = QueryPagingEngine.WrapWithMaxRows(currentSQL, ctx.MaxRows, ctx.Platform);
58
65
  }
59
66
  // ── Step 4: Paging (if requested) ────────────────────────────
60
67
  let pagingResult = null;
61
68
  let afterPaging = null;
62
- if (ctx.Paging && QueryPagingEngine.ShouldPage(ctx.Paging.StartRow, ctx.Paging.MaxRows)) {
69
+ if (hasPaging) {
63
70
  pagingResult = QueryPagingEngine.WrapWithPaging(currentSQL, ctx.Paging.StartRow, ctx.Paging.MaxRows, ctx.Platform);
64
71
  currentSQL = pagingResult.DataSQL;
65
72
  afterPaging = currentSQL;
@@ -134,132 +141,6 @@ export class RenderPipeline {
134
141
  appliedParameters: (result.appliedParameters || {}),
135
142
  };
136
143
  }
137
- /**
138
- * Injects a row-cap (`TOP N` for SQL Server, `LIMIT N` for Postgres) onto
139
- * the outermost SELECT of `sql`.
140
- *
141
- * Uses an AST-based rewrite so CTE queries (`WITH … SELECT …`), nested
142
- * subqueries, comments, and casing are all handled correctly. The cap is
143
- * applied to the outermost projection only, leaving any inner `TOP N` /
144
- * `LIMIT N` clauses inside CTE definitions or subqueries untouched.
145
- *
146
- * For shapes the parser can't represent at the top level
147
- * (UNION/INTERSECT/EXCEPT, vendor-specific T-SQL the parser rejects, sqlify
148
- * round-trip failures), falls back to wrapping the original SQL in
149
- * `SELECT TOP N * FROM (<original>) AS _capped` — always safe because the
150
- * inner SQL is treated as opaque.
151
- */
152
- static applyMaxRows(sql, maxRows, platform) {
153
- const dialect = RenderPipeline.getDialect(platform);
154
- const fromAst = RenderPipeline.applyMaxRowsViaAst(sql, maxRows, dialect);
155
- if (fromAst !== null)
156
- return fromAst;
157
- return RenderPipeline.applyMaxRowsViaSubqueryWrap(sql, maxRows, dialect);
158
- }
159
- static applyMaxRowsViaAst(sql, maxRows, dialect) {
160
- const ast = SQLParser.ParseSQL(sql, dialect);
161
- if (!ast)
162
- return null;
163
- const root = Array.isArray(ast) ? ast[0] : ast;
164
- if (!root)
165
- return null;
166
- // Non-SELECT (INSERT/UPDATE/DELETE/MERGE): row caps don't apply — leave alone.
167
- // Discriminating on `type` narrows `root` to node-sql-parser's `Select` shape.
168
- if (root.type !== 'select')
169
- return sql;
170
- // `top` is a SQL Server-specific field on the Select node that node-sql-parser's
171
- // published .d.ts omits. Widen the narrowed type via intersection so we can
172
- // read/write it without an `as unknown` escape hatch.
173
- const selectNode = root;
174
- // UNION/INTERSECT/EXCEPT: outer SELECT has set_op + _next branches. Injecting
175
- // `top` here only caps the first branch, so defer to the subquery wrap.
176
- if (selectNode.set_op)
177
- return null;
178
- // Idempotency: an explicit outer TOP/LIMIT wins over MaxRows.
179
- // node-sql-parser distinguishes "no LIMIT" by an empty `limit.value` array
180
- // on Postgres (the wrapper object is always present), while SQL Server uses
181
- // `top === null`. Check both shapes so we don't double-inject.
182
- if (selectNode.top != null)
183
- return sql;
184
- if (selectNode.limit != null && selectNode.limit.value.length > 0)
185
- return sql;
186
- const limitClause = dialect.LimitClause(maxRows);
187
- if (limitClause.prefix) {
188
- // SQL Server: { value, percent } matches node-sql-parser's parsed shape
189
- selectNode.top = { value: maxRows, percent: null };
190
- }
191
- else {
192
- // PostgreSQL: { seperator, value[] } — note the parser's spelling of "seperator"
193
- selectNode.limit = { seperator: '', value: [{ type: 'number', value: maxRows }] };
194
- }
195
- try {
196
- return SQLParser.SqlifyAST(ast, dialect);
197
- }
198
- catch {
199
- return null;
200
- }
201
- }
202
- static applyMaxRowsViaSubqueryWrap(sql, maxRows, dialect) {
203
- const trimmed = sql.trim().replace(/;\s*$/, '');
204
- const limitClause = dialect.LimitClause(maxRows);
205
- if (limitClause.prefix) {
206
- // SQL Server: outer projection cap. The optimizer pushes TOP N through trivially.
207
- return `SELECT ${limitClause.prefix} * FROM (${trimmed}) AS _capped`;
208
- }
209
- // PostgreSQL: appending LIMIT N is always legal at the end of a SELECT/CTE.
210
- return `${trimmed}\n${limitClause.suffix}`;
211
- }
212
- static getDialect(platform) {
213
- return GetDialect(platform);
214
- }
215
- /**
216
- * Strips SQL comments (single-line -- and block comments) from a SQL string.
217
- * Preserves single-quoted string literals to avoid stripping inside them.
218
- */
219
- static stripSQLComments(sql) {
220
- let result = '';
221
- let i = 0;
222
- while (i < sql.length) {
223
- // Single-quoted string literal — preserve as-is
224
- if (sql[i] === "'") {
225
- result += sql[i++];
226
- while (i < sql.length) {
227
- if (sql[i] === "'" && i + 1 < sql.length && sql[i + 1] === "'") {
228
- result += "''";
229
- i += 2;
230
- }
231
- else if (sql[i] === "'") {
232
- result += sql[i++];
233
- break;
234
- }
235
- else {
236
- result += sql[i++];
237
- }
238
- }
239
- }
240
- // Single-line comment: -- to end of line
241
- else if (sql[i] === '-' && i + 1 < sql.length && sql[i + 1] === '-') {
242
- while (i < sql.length && sql[i] !== '\n')
243
- i++;
244
- }
245
- // Block comment: /* ... */
246
- else if (sql[i] === '/' && i + 1 < sql.length && sql[i + 1] === '*') {
247
- i += 2;
248
- while (i < sql.length) {
249
- if (sql[i] === '*' && i + 1 < sql.length && sql[i + 1] === '/') {
250
- i += 2;
251
- break;
252
- }
253
- i++;
254
- }
255
- }
256
- // Normal character
257
- else {
258
- result += sql[i++];
259
- }
260
- }
261
- return result;
262
- }
263
144
  }
264
145
  // ════════════════════════════════════════════════════════════════════
265
146
  // Helpers
@@ -1 +1 @@
1
- {"version":3,"file":"renderPipeline.js","sourceRoot":"","sources":["../src/renderPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderPipeline.js","sourceRoot":"","sources":["../src/renderPipeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/generic-database-provider",
3
3
  "type": "module",
4
- "version": "5.36.0",
4
+ "version": "5.37.0",
5
5
  "description": "Shared database provider logic for MemberJunction — intermediate base class between DatabaseProviderBase and platform-specific providers",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -22,18 +22,18 @@
22
22
  "vitest": "^3.1.1"
23
23
  },
24
24
  "dependencies": {
25
- "@memberjunction/actions": "5.36.0",
26
- "@memberjunction/actions-base": "5.36.0",
27
- "@memberjunction/aiengine": "5.36.0",
28
- "@memberjunction/core": "5.36.0",
29
- "@memberjunction/core-entities": "5.36.0",
30
- "@memberjunction/encryption": "5.36.0",
31
- "@memberjunction/geo-core": "5.36.0",
32
- "@memberjunction/global": "5.36.0",
33
- "@memberjunction/query-processor": "5.36.0",
34
- "@memberjunction/sql-dialect": "5.36.0",
35
- "@memberjunction/sql-parser": "5.36.0",
36
- "@memberjunction/queue": "5.36.0",
25
+ "@memberjunction/actions": "5.37.0",
26
+ "@memberjunction/actions-base": "5.37.0",
27
+ "@memberjunction/aiengine": "5.37.0",
28
+ "@memberjunction/core": "5.37.0",
29
+ "@memberjunction/core-entities": "5.37.0",
30
+ "@memberjunction/encryption": "5.37.0",
31
+ "@memberjunction/geo-core": "5.37.0",
32
+ "@memberjunction/global": "5.37.0",
33
+ "@memberjunction/query-processor": "5.37.0",
34
+ "@memberjunction/sql-dialect": "5.37.0",
35
+ "@memberjunction/sql-parser": "5.37.0",
36
+ "@memberjunction/queue": "5.37.0",
37
37
  "sql-formatter": "^15.7.0",
38
38
  "uuid": "^13.0.0"
39
39
  },