UNPKG

rawsql-ts

Version:

[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.

88 lines (87 loc) 2.93 kB
import { TableSource } from "../models/Clause"; import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent"; /** * A specialized table source collector designed for CTE dependency analysis. * * Unlike the general-purpose TableSourceCollector, this collector: * - Always includes CTE references in results (treats CTEs as valid table sources) * - Always performs deep traversal of subqueries, WHERE clauses, etc. * - Is optimized for dependency analysis rather than database schema analysis * * This collector is specifically designed for use by CTEDependencyAnalyzer to track * which tables/CTEs are referenced by queries at any nesting level. */ export declare class CTETableReferenceCollector implements SqlComponentVisitor<void> { private handlers; private tableSources; private visitedNodes; private tableNameMap; private isRootVisit; constructor(); /** * Collects all table references from the given SQL component * @param query The SQL component to analyze * @returns Array of TableSource objects representing all table references */ collect(query: SqlComponent): TableSource[]; /** * Gets all collected table sources */ getTableSources(): TableSource[]; /** * Reset the collection of table sources */ private reset; /** * Gets a unique identifier for a table source */ private getTableIdentifier; /** * Main entry point for the visitor pattern. */ visit(arg: SqlComponent): void; /** * Internal visit method used for all nodes. */ private visitNode; private visitSimpleSelectQuery; private visitBinarySelectQuery; private visitValuesQuery; private visitFromClause; private visitSourceExpression; private visitTableSource; private visitFunctionSource; private visitValueComponent; private visitParenSource; private visitSubQuerySource; private visitInlineQuery; private visitJoinClause; private visitJoinOnClause; private visitJoinUsingClause; private visitWhereClause; private visitGroupByClause; private visitHavingClause; private visitOrderByClause; private visitWindowFrameClause; private visitLimitClause; private visitOffsetClause; private visitFetchClause; private visitForClause; private visitOrderByItem; private visitSelectClause; private visitSelectItem; private visitParenExpression; private visitBinaryExpression; private visitUnaryExpression; private visitCaseExpression; private visitSwitchCaseArgument; private visitCaseKeyValuePair; private visitBetweenExpression; private visitFunctionCall; private visitArrayExpression; private visitArrayQueryExpression; private visitTupleExpression; private visitCastExpression; private visitValueList; private visitStringSpecifierExpression; }