Documentation
¶
Index ¶
- func AssetTypeToDialect(assetType pipeline.AssetType) (string, error)
- func ConnectionTypeToDialect(connectionType string) string
- type CTE
- type ColumnLineage
- type Lineage
- type Parser
- type QueryConfig
- type RustSQLParser
- func (s *RustSQLParser) AddLimit(sql string, limit int, dialect string) (string, error)
- func (s *RustSQLParser) Close() error
- func (s *RustSQLParser) ColumnLineage(sql, dialect string, schema Schema) (*Lineage, error)
- func (s *RustSQLParser) GetMissingDependenciesForAsset(asset *pipeline.Asset, pipeline *pipeline.Pipeline, ...) ([]string, error)
- func (s *RustSQLParser) HoistDeclares(sql string, assetType pipeline.AssetType) (string, error)
- func (s *RustSQLParser) HoistDeclaresList(queries []string, assetType pipeline.AssetType) ([]string, error)
- func (s *RustSQLParser) IsSingleSelectQuery(sql string, dialect string) (bool, error)
- func (s *RustSQLParser) RenameTables(sql string, dialect string, tableMapping map[string]string) (string, error)
- func (s *RustSQLParser) Start() error
- func (s *RustSQLParser) UsedTables(sql, dialect string) ([]string, error)
- type SQLParser
- func (s *SQLParser) AddLimit(sql string, limit int, dialect string) (string, error)
- func (s *SQLParser) Close() error
- func (s *SQLParser) ColumnLineage(sql, dialect string, schema Schema) (*Lineage, error)
- func (s *SQLParser) ExtractSelect(sql string, dialect string) (string, error)
- func (s *SQLParser) FreezeTime(sql string, dialect string, executionTime string) (string, error)
- func (s *SQLParser) GetMissingDependenciesForAsset(asset *pipeline.Asset, pipeline *pipeline.Pipeline, ...) ([]string, error)
- func (s *SQLParser) IsSingleSelectQuery(sql string, dialect string) (bool, error)
- func (s *SQLParser) PrependCTEs(sql string, dialect string, ctes []CTE) (string, error)
- func (s *SQLParser) RenameTables(sql string, dialect string, tableMapping map[string]string) (string, error)
- func (s *SQLParser) SelectFromCTE(sql string, dialect string, cteName string) (string, error)
- func (s *SQLParser) Start() error
- func (s *SQLParser) UsedTables(sql, dialect string) ([]string, error)
- type Schema
- type UpstreamColumn
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssetTypeToDialect ¶ added in v0.11.192
func ConnectionTypeToDialect ¶ added in v0.11.644
ConnectionTypeToDialect maps a connection type identifier (e.g. "clickhouse") to the dialect string used by the rust SQL parser. Returns the empty string when no dialect is registered for the type.
Types ¶
type CTE ¶ added in v0.11.661
CTE is a named common table expression to prepend to a query. The JSON tags match the keys the parser's add-ctes verb reads, so a []CTE serializes directly onto the wire.
type ColumnLineage ¶
type ColumnLineage struct {
Name string `json:"name"`
Upstream []UpstreamColumn `json:"upstream"`
Type string `json:"type"`
}
type Lineage ¶
type Lineage struct {
Columns []ColumnLineage `json:"columns"`
NonSelectedColumns []ColumnLineage `json:"non_selected_columns"`
Errors []string `json:"errors"`
}
type Parser ¶ added in v0.11.488
type Parser interface {
Start() error
ColumnLineage(sql, dialect string, schema Schema) (*Lineage, error)
UsedTables(sql, dialect string) ([]string, error)
RenameTables(sql, dialect string, tableMapping map[string]string) (string, error)
AddLimit(sql string, limit int, dialect string) (string, error)
IsSingleSelectQuery(sql string, dialect string) (bool, error)
GetMissingDependenciesForAsset(asset *pipeline.Asset, pipeline *pipeline.Pipeline, renderer jinja.RendererInterface) ([]string, error)
Close() error
}
type QueryConfig ¶
type RustSQLParser ¶ added in v0.11.488
type RustSQLParser struct {
MaxQueryLength int
}
func NewRustSQLParser ¶ added in v0.11.488
func NewRustSQLParser(_ bool) (*RustSQLParser, error)
func NewRustSQLParserWithConfig ¶ added in v0.11.488
func NewRustSQLParserWithConfig(_ bool, maxQueryLength int) (*RustSQLParser, error)
func (*RustSQLParser) Close ¶ added in v0.11.488
func (s *RustSQLParser) Close() error
func (*RustSQLParser) ColumnLineage ¶ added in v0.11.488
func (s *RustSQLParser) ColumnLineage(sql, dialect string, schema Schema) (*Lineage, error)
func (*RustSQLParser) GetMissingDependenciesForAsset ¶ added in v0.11.488
func (s *RustSQLParser) GetMissingDependenciesForAsset(asset *pipeline.Asset, pipeline *pipeline.Pipeline, renderer jinja.RendererInterface) ([]string, error)
func (*RustSQLParser) HoistDeclares ¶ added in v0.11.587
HoistDeclares reorders top-level DECLARE statements to the front of a multi-statement script via the in-process Rust SQL parser. Each statement's original text is preserved byte-for-byte; only the order and ';\n' separators are rewritten. DECLAREs nested inside BEGIN..END / CASE..END stay put. On dialect lookup or parse failure the input is returned together with the error so callers can fall back gracefully.
func (*RustSQLParser) HoistDeclaresList ¶ added in v0.11.587
func (s *RustSQLParser) HoistDeclaresList(queries []string, assetType pipeline.AssetType) ([]string, error)
HoistDeclaresList reorders a list of pre-split SQL statements so DECLAREs lead, preserving each element's text verbatim.
func (*RustSQLParser) IsSingleSelectQuery ¶ added in v0.11.488
func (s *RustSQLParser) IsSingleSelectQuery(sql string, dialect string) (bool, error)
func (*RustSQLParser) RenameTables ¶ added in v0.11.488
func (*RustSQLParser) Start ¶ added in v0.11.488
func (s *RustSQLParser) Start() error
Start is idempotent and effectively free: the Rust SQL parser lives in-process behind CGo, with no subprocess to spin up or state to track. It only verifies that the FFI library is linked (a compile-time guarantee on darwin/linux) and otherwise returns nil. Calling it repeatedly — or not at all — has no effect. Methods like HoistDeclares do not call it internally, so there is no double-start hazard.
func (*RustSQLParser) UsedTables ¶ added in v0.11.488
func (s *RustSQLParser) UsedTables(sql, dialect string) ([]string, error)
type SQLParser ¶
type SQLParser struct {
MaxQueryLength int
// contains filtered or unexported fields
}
func NewSQLParser ¶
func NewSQLParserCached ¶ added in v0.11.497
NewSQLParserCached creates a SQLParser that reuses previously extracted embedded files from a stable temp directory path. This is significantly faster when files already exist (skips ~3s of file extraction) and is safe for concurrent reads across test packages.
func NewSQLParserWithConfig ¶ added in v0.11.241
func (*SQLParser) ColumnLineage ¶
func (*SQLParser) ExtractSelect ¶ added in v0.11.661
ExtractSelect reduces an asset statement to the SELECT that produces its rows. A CREATE OR REPLACE VIEW / CTAS / INSERT ... SELECT is unwrapped to its inner SELECT, and a statement that is already a SELECT (with or without a WITH clause) is returned unchanged. This lets a unit test exercise the read logic of a `materialization: none` (full-DDL) asset without issuing the DDL, keeping the test a single read-only SELECT. It errors when the statement has no SELECT to test (e.g. a CREATE TABLE with a column list).
func (*SQLParser) FreezeTime ¶ added in v0.11.661
FreezeTime replaces CURRENT_TIMESTAMP / CURRENT_DATE / CURRENT_TIME in a query with literals fixed at executionTime, so a unit test of a time-dependent asset is deterministic instead of reading the warehouse clock.
func (*SQLParser) GetMissingDependenciesForAsset ¶ added in v0.11.216
func (*SQLParser) IsSingleSelectQuery ¶ added in v0.11.254
func (*SQLParser) PrependCTEs ¶ added in v0.11.661
PrependCTEs adds the given CTEs to the front of a query's WITH clause (merging with any existing one, so existing CTEs can reference the prepended ones) and returns the rewritten SQL in the same dialect. It underpins connection-mode unit tests, which substitute the tables a query reads with inline fixture CTEs so the test runs as a single read-only SELECT with no DDL.
func (*SQLParser) RenameTables ¶ added in v0.11.169
func (*SQLParser) SelectFromCTE ¶ added in v0.11.661
SelectFromCTE rewrites a query so it returns all rows of one of its own named CTEs (WITH … SELECT * FROM <cteName>), keeping the other CTEs in place. It lets a unit test assert the output of an intermediate CTE. Errors if the query has no WITH clause or no CTE with that name.