@memberjunction/sql-dialect
Advanced tools
| /** | ||
| * Rebuild a PostgreSQL layered outer view so `g.*` re-expands against the | ||
| * current inner view. | ||
| * | ||
| * PostgreSQL expands `SELECT *` / `g.*` at CREATE VIEW time and freezes the | ||
| * column list. `CREATE OR REPLACE` of the inner view does not touch dependents, | ||
| * so a wrapper written as `SELECT g.*, extras FROM inner g` silently stops | ||
| * picking up new inner columns. `pg_get_viewdef` returns that *expanded* list, | ||
| * not the original `g.*`. | ||
| * | ||
| * This rewrites the deparsed outer definition back to `SELECT <alias>.*, extras` | ||
| * so CREATE VIEW re-expands against the live inner relation. Extra SELECT items | ||
| * (computed columns, joins) are preserved. Inner columns newly added in the | ||
| * *middle* of `g.*` are not in the old deparsed list; putting `g.*` back is | ||
| * what makes them appear. | ||
| * | ||
| * The extras-are-trailing contract is the layered-view one: `g.*` then | ||
| * application columns. We consume leading SELECT items that are simple | ||
| * references to inner-view columns, and treat the rest as extras. | ||
| */ | ||
| export declare class LayeredOuterRestarError extends Error { | ||
| constructor(message: string); | ||
| } | ||
| export interface RestarLayeredOuterViewArgs { | ||
| /** Body returned by `pg_get_viewdef(oid, true)` — a SELECT, not CREATE VIEW. */ | ||
| viewDefinition: string; | ||
| /** Unquoted inner view name, e.g. `vwOrganizationsGenerated`. */ | ||
| innerViewName: string; | ||
| /** Inner view column names in ordinal order (unquoted). */ | ||
| innerColumns: string[]; | ||
| } | ||
| export declare function restarLayeredOuterView(args: RestarLayeredOuterViewArgs): string; | ||
| export declare function buildCreateOrReplaceLayeredOuterViewSQL(schema: string, outerView: string, restarredSelect: string): string; | ||
| /** | ||
| * Index of a top-level SQL keyword (FROM, etc.) in `sql`, ignoring matches | ||
| * inside parentheses or quoted identifiers/strings. | ||
| */ | ||
| export declare function findTopLevelKeyword(sql: string, keyword: string): number; | ||
| export declare function splitTopLevelCommaList(list: string): string[]; | ||
| //# sourceMappingURL=postgresqlRestarLayeredOuter.d.ts.map |
| {"version":3,"file":"postgresqlRestarLayeredOuter.d.ts","sourceRoot":"","sources":["../src/postgresqlRestarLayeredOuter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qBAAa,uBAAwB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI9B;AAED,MAAM,WAAW,0BAA0B;IACvC,gFAAgF;IAChF,cAAc,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,CAgD/E;AAED,wBAAgB,uCAAuC,CACnD,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACxB,MAAM,CAER;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA+BxE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC7D"} |
| /** | ||
| * Rebuild a PostgreSQL layered outer view so `g.*` re-expands against the | ||
| * current inner view. | ||
| * | ||
| * PostgreSQL expands `SELECT *` / `g.*` at CREATE VIEW time and freezes the | ||
| * column list. `CREATE OR REPLACE` of the inner view does not touch dependents, | ||
| * so a wrapper written as `SELECT g.*, extras FROM inner g` silently stops | ||
| * picking up new inner columns. `pg_get_viewdef` returns that *expanded* list, | ||
| * not the original `g.*`. | ||
| * | ||
| * This rewrites the deparsed outer definition back to `SELECT <alias>.*, extras` | ||
| * so CREATE VIEW re-expands against the live inner relation. Extra SELECT items | ||
| * (computed columns, joins) are preserved. Inner columns newly added in the | ||
| * *middle* of `g.*` are not in the old deparsed list; putting `g.*` back is | ||
| * what makes them appear. | ||
| * | ||
| * The extras-are-trailing contract is the layered-view one: `g.*` then | ||
| * application columns. We consume leading SELECT items that are simple | ||
| * references to inner-view columns, and treat the rest as extras. | ||
| */ | ||
| export class LayeredOuterRestarError extends Error { | ||
| constructor(message) { | ||
| super(message); | ||
| this.name = 'LayeredOuterRestarError'; | ||
| } | ||
| } | ||
| const IDENT = String.raw `(?:"[^"]+"|[A-Za-z_][A-Za-z0-9_$]*)`; | ||
| export function restarLayeredOuterView(args) { | ||
| const innerCols = new Set(args.innerColumns.map((c) => c)); | ||
| if (innerCols.size === 0) { | ||
| throw new LayeredOuterRestarError('innerColumns is empty; cannot restar a layered outer view'); | ||
| } | ||
| let def = args.viewDefinition.trim(); | ||
| if (def.endsWith(';')) { | ||
| def = def.slice(0, -1).trim(); | ||
| } | ||
| if (!/^select\b/i.test(def)) { | ||
| throw new LayeredOuterRestarError(`outer view definition does not start with SELECT: ${def.slice(0, 80)}`); | ||
| } | ||
| const fromPos = findTopLevelKeyword(def, 'from'); | ||
| if (fromPos < 0) { | ||
| throw new LayeredOuterRestarError('outer view definition has no top-level FROM'); | ||
| } | ||
| const selectList = def.slice('select'.length, fromPos).trim(); | ||
| const fromAndRest = def.slice(fromPos).trim(); | ||
| const alias = detectInnerAlias(fromAndRest, args.innerViewName) ?? 'g'; | ||
| const items = splitTopLevelCommaList(selectList); | ||
| if (items.length === 0) { | ||
| throw new LayeredOuterRestarError('outer view SELECT list is empty'); | ||
| } | ||
| if (isStarOfAlias(items[0], alias) || isBareStar(items[0])) { | ||
| const extras = items.slice(1); | ||
| return rebuildSelect(alias, extras, fromAndRest); | ||
| } | ||
| let consumed = 0; | ||
| for (const item of items) { | ||
| if (isSimpleInnerColumnRef(item, alias, innerCols)) { | ||
| consumed++; | ||
| } | ||
| else { | ||
| break; | ||
| } | ||
| } | ||
| if (consumed === 0) { | ||
| throw new LayeredOuterRestarError(`outer view SELECT list does not start with inner columns of ${args.innerViewName} (first item: ${items[0].slice(0, 80)})`); | ||
| } | ||
| return rebuildSelect(alias, items.slice(consumed), fromAndRest); | ||
| } | ||
| export function buildCreateOrReplaceLayeredOuterViewSQL(schema, outerView, restarredSelect) { | ||
| return `CREATE OR REPLACE VIEW ${quoteQualified(schema, outerView)}\nAS\n${restarredSelect}`; | ||
| } | ||
| function rebuildSelect(alias, extras, fromAndRest) { | ||
| const star = `SELECT ${quoteIdent(alias)}.*`; | ||
| if (extras.length === 0) { | ||
| return `${star}\n${fromAndRest}`; | ||
| } | ||
| const extraList = extras.map((e) => e.trim()).join(',\n '); | ||
| return `${star},\n ${extraList}\n${fromAndRest}`; | ||
| } | ||
| function quoteIdent(name) { | ||
| return `"${name.replace(/"/g, '""')}"`; | ||
| } | ||
| function quoteQualified(schema, name) { | ||
| return `${quoteIdent(schema)}.${quoteIdent(name)}`; | ||
| } | ||
| /** | ||
| * Index of a top-level SQL keyword (FROM, etc.) in `sql`, ignoring matches | ||
| * inside parentheses or quoted identifiers/strings. | ||
| */ | ||
| export function findTopLevelKeyword(sql, keyword) { | ||
| const target = keyword.toLowerCase(); | ||
| let depth = 0; | ||
| let i = 0; | ||
| while (i < sql.length) { | ||
| const ch = sql[i]; | ||
| if (ch === "'" || ch === '"') { | ||
| i = skipQuoted(sql, i, ch); | ||
| continue; | ||
| } | ||
| if (ch === '(') { | ||
| depth++; | ||
| i++; | ||
| continue; | ||
| } | ||
| if (ch === ')') { | ||
| depth--; | ||
| i++; | ||
| continue; | ||
| } | ||
| if (depth === 0 && | ||
| isKeywordStart(sql, i) && | ||
| sql.slice(i, i + target.length).toLowerCase() === target && | ||
| isKeywordEnd(sql, i + target.length)) { | ||
| return i; | ||
| } | ||
| i++; | ||
| } | ||
| return -1; | ||
| } | ||
| export function splitTopLevelCommaList(list) { | ||
| const items = []; | ||
| let depth = 0; | ||
| let start = 0; | ||
| let i = 0; | ||
| while (i < list.length) { | ||
| const ch = list[i]; | ||
| if (ch === "'" || ch === '"') { | ||
| i = skipQuoted(list, i, ch); | ||
| continue; | ||
| } | ||
| if (ch === '(') { | ||
| depth++; | ||
| i++; | ||
| continue; | ||
| } | ||
| if (ch === ')') { | ||
| depth--; | ||
| i++; | ||
| continue; | ||
| } | ||
| if (ch === ',' && depth === 0) { | ||
| items.push(list.slice(start, i).trim()); | ||
| start = i + 1; | ||
| } | ||
| i++; | ||
| } | ||
| const last = list.slice(start).trim(); | ||
| if (last) { | ||
| items.push(last); | ||
| } | ||
| return items; | ||
| } | ||
| function skipQuoted(sql, start, quote) { | ||
| let i = start + 1; | ||
| while (i < sql.length) { | ||
| if (sql[i] === quote) { | ||
| if (sql[i + 1] === quote) { | ||
| i += 2; | ||
| continue; | ||
| } | ||
| return i + 1; | ||
| } | ||
| i++; | ||
| } | ||
| return sql.length; | ||
| } | ||
| function isKeywordStart(sql, index) { | ||
| if (index === 0) { | ||
| return true; | ||
| } | ||
| return !/[A-Za-z0-9_$]/.test(sql[index - 1]); | ||
| } | ||
| function isKeywordEnd(sql, index) { | ||
| if (index >= sql.length) { | ||
| return true; | ||
| } | ||
| return !/[A-Za-z0-9_$]/.test(sql[index]); | ||
| } | ||
| function detectInnerAlias(fromAndRest, innerViewName) { | ||
| const fromMatch = fromAndRest.match(new RegExp(String.raw `^from\s+(${IDENT}(?:\.${IDENT})?)(?:\s+as)?\s+(${IDENT})\b`, 'i')); | ||
| if (!fromMatch) { | ||
| return null; | ||
| } | ||
| const relation = unquoteIdent(fromMatch[1].includes('.') ? fromMatch[1].slice(fromMatch[1].lastIndexOf('.') + 1) : fromMatch[1]); | ||
| if (relation !== innerViewName) { | ||
| return null; | ||
| } | ||
| return unquoteIdent(fromMatch[2]); | ||
| } | ||
| function unquoteIdent(raw) { | ||
| const trimmed = raw.trim(); | ||
| if (trimmed.startsWith('"') && trimmed.endsWith('"')) { | ||
| return trimmed.slice(1, -1).replace(/""/g, '"'); | ||
| } | ||
| return trimmed; | ||
| } | ||
| function isBareStar(item) { | ||
| return item.trim() === '*'; | ||
| } | ||
| function isStarOfAlias(item, alias) { | ||
| const t = item.trim(); | ||
| const aliasQ = quoteIdent(alias); | ||
| return new RegExp(String.raw `^(?:${escapeRegExp(aliasQ)}|${escapeRegExp(alias)})\.\*$`, 'i').test(t); | ||
| } | ||
| function isSimpleInnerColumnRef(item, alias, innerCols) { | ||
| let t = item.trim(); | ||
| t = t.replace(/\s*::[\w\s."()]+$/i, '').trim(); | ||
| t = stripWrappingParens(t); | ||
| const asMatch = t.match(new RegExp(String.raw `^(.*)\s+as\s+(${IDENT})$`, 'i')); | ||
| let asName = null; | ||
| if (asMatch) { | ||
| t = asMatch[1].trim(); | ||
| asName = unquoteIdent(asMatch[2]); | ||
| } | ||
| const colMatch = t.match(new RegExp(String.raw `^(?:(${IDENT})\.)?(${IDENT})$`)); | ||
| if (!colMatch) { | ||
| return false; | ||
| } | ||
| if (colMatch[1] && unquoteIdent(colMatch[1]) !== alias) { | ||
| return false; | ||
| } | ||
| const col = unquoteIdent(colMatch[2]); | ||
| if (asName && asName !== col) { | ||
| return false; | ||
| } | ||
| return innerCols.has(col); | ||
| } | ||
| function stripWrappingParens(s) { | ||
| let t = s; | ||
| while (t.startsWith('(') && t.endsWith(')')) { | ||
| let depth = 0; | ||
| let wraps = true; | ||
| for (let i = 0; i < t.length; i++) { | ||
| if (t[i] === '(') | ||
| depth++; | ||
| else if (t[i] === ')') | ||
| depth--; | ||
| if (depth === 0 && i < t.length - 1) { | ||
| wraps = false; | ||
| break; | ||
| } | ||
| } | ||
| if (!wraps) { | ||
| break; | ||
| } | ||
| t = t.slice(1, -1).trim(); | ||
| } | ||
| return t; | ||
| } | ||
| function escapeRegExp(s) { | ||
| return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | ||
| } | ||
| //# sourceMappingURL=postgresqlRestarLayeredOuter.js.map |
| {"version":3,"file":"postgresqlRestarLayeredOuter.js","sourceRoot":"","sources":["../src/postgresqlRestarLayeredOuter.ts"],"names":[],"mappings":"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"} |
+2
-0
@@ -8,4 +8,6 @@ export { DataTypeMap, MappedType } from './dataTypeMap.js'; | ||
| export { GetDialect } from './dialectFactory.js'; | ||
| export { restarLayeredOuterView, buildCreateOrReplaceLayeredOuterViewSQL, LayeredOuterRestarError, findTopLevelKeyword, splitTopLevelCommaList, } from './postgresqlRestarLayeredOuter.js'; | ||
| export type { RestarLayeredOuterViewArgs } from './postgresqlRestarLayeredOuter.js'; | ||
| export { AutoQuotePostgreSQLIdentifiers, PostgreSQLQuotingKeywords, PostgreSQLStructuralKeywords, PostgreSQLContextualStructuralKeywords, } from './postgresqlAutoQuote.js'; | ||
| export { IsBooleanSQLType, IsStringSQLType, IsFixedWidthStringSQLType, IsDateSQLType, IsIntegerSQLType, IsFloatSQLType, IsUuidSQLType, IsBinarySQLType, IsJsonSQLType, IsCurrencySQLType, IsIntervalSQLType, IsNetworkSQLType, IsNumericSQLType, } from './typeClassification.js'; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACH,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACH,8BAA8B,EAC9B,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACH,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACH,sBAAsB,EACtB,uCAAuC,EACvC,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EACH,8BAA8B,EAC9B,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC"} |
+1
-0
@@ -5,4 +5,5 @@ export { SQLDialect, } from './sqlDialect.js'; | ||
| export { GetDialect } from './dialectFactory.js'; | ||
| export { restarLayeredOuterView, buildCreateOrReplaceLayeredOuterViewSQL, LayeredOuterRestarError, findTopLevelKeyword, splitTopLevelCommaList, } from './postgresqlRestarLayeredOuter.js'; | ||
| export { AutoQuotePostgreSQLIdentifiers, PostgreSQLQuotingKeywords, PostgreSQLStructuralKeywords, PostgreSQLContextualStructuralKeywords, } from './postgresqlAutoQuote.js'; | ||
| export { IsBooleanSQLType, IsStringSQLType, IsFixedWidthStringSQLType, IsDateSQLType, IsIntegerSQLType, IsFloatSQLType, IsUuidSQLType, IsBinarySQLType, IsJsonSQLType, IsCurrencySQLType, IsIntervalSQLType, IsNetworkSQLType, IsNumericSQLType, } from './typeClassification.js'; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,GASb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACH,8BAA8B,EAC9B,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,GASb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EACH,sBAAsB,EACtB,uCAAuC,EACvC,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACH,8BAA8B,EAC9B,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC"} |
+1
-1
@@ -5,3 +5,3 @@ { | ||
| "type": "module", | ||
| "version": "6.1.0-edge.3", | ||
| "version": "6.1.0-edge.4", | ||
| "description": "MemberJunction: SQL Dialect Abstraction Layer for multi-database support", | ||
@@ -8,0 +8,0 @@ "main": "dist/index.js", |
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
323765
6.69%39
11.43%4013
7.91%