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
TypeScript
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;
}