Expand description
Polyglot Core - SQL parsing and dialect translation library
This library provides the core functionality for parsing SQL statements, building an abstract syntax tree (AST), and generating SQL in different dialects.
§Architecture
The library follows a pipeline architecture:
- Tokenizer - Converts SQL string to token stream
- Parser - Builds AST from tokens
- Generator - Converts AST back to SQL string
Each stage can be customized per dialect.
Re-exports§
pub use dialects::Dialect;pub use dialects::DialectType;pub use dialects::CustomDialectBuilder;pub use dialects::unregister_custom_dialect;pub use error::Error;pub use error::Result;pub use error::ValidationError;pub use error::ValidationResult;pub use error::ValidationSeverity;pub use expressions::Expression;pub use generator::Generator;pub use helper::csv;pub use helper::find_new_name;pub use helper::is_date_unit;pub use helper::is_float;pub use helper::is_int;pub use helper::is_iso_date;pub use helper::is_iso_datetime;pub use helper::merge_ranges;pub use helper::name_sequence;pub use helper::seq_get;pub use helper::split_num_words;pub use helper::tsort;pub use helper::while_changing;pub use helper::DATE_UNITS;pub use parser::Parser;pub use resolver::is_column_ambiguous;pub use resolver::resolve_column;pub use resolver::Resolver;pub use resolver::ResolverError;pub use resolver::ResolverResult;pub use schema::ensure_schema;pub use schema::from_simple_map;pub use schema::normalize_name;pub use schema::MappingSchema;pub use schema::Schema;pub use schema::SchemaError;pub use scope::build_scope;pub use scope::find_all_in_scope;pub use scope::find_in_scope;pub use scope::traverse_scope;pub use scope::walk_in_scope;pub use scope::ColumnRef;pub use scope::Scope;pub use scope::ScopeType;pub use scope::SourceInfo;pub use time::format_time;pub use time::is_valid_timezone;pub use time::subsecond_precision;pub use time::TIMEZONES;pub use tokens::Token;pub use tokens::TokenType;pub use tokens::Tokenizer;pub use traversal::contains_aggregate;pub use traversal::contains_subquery;pub use traversal::contains_window_function;pub use traversal::find_ancestor;pub use traversal::find_parent;pub use traversal::get_columns;pub use traversal::get_tables;pub use traversal::is_aggregate;pub use traversal::is_column;pub use traversal::is_function;pub use traversal::is_literal;pub use traversal::is_select;pub use traversal::is_subquery;pub use traversal::is_window_function;pub use traversal::transform;pub use traversal::transform_map;pub use traversal::BfsIter;pub use traversal::DfsIter;pub use traversal::ExpressionWalk;pub use traversal::ParentInfo;pub use traversal::TreeContext;pub use traversal::is_insert;pub use traversal::is_update;pub use traversal::is_delete;pub use traversal::is_union;pub use traversal::is_intersect;pub use traversal::is_except;pub use traversal::is_boolean;pub use traversal::is_null_literal;pub use traversal::is_star;pub use traversal::is_identifier;pub use traversal::is_table;pub use traversal::is_eq;pub use traversal::is_neq;pub use traversal::is_lt;pub use traversal::is_lte;pub use traversal::is_gt;pub use traversal::is_gte;pub use traversal::is_like;pub use traversal::is_ilike;pub use traversal::is_add;pub use traversal::is_sub;pub use traversal::is_mul;pub use traversal::is_div;pub use traversal::is_mod;pub use traversal::is_concat;pub use traversal::is_and;pub use traversal::is_or;pub use traversal::is_not;pub use traversal::is_in;pub use traversal::is_between;pub use traversal::is_is_null;pub use traversal::is_exists;pub use traversal::is_count;pub use traversal::is_sum;pub use traversal::is_avg;pub use traversal::is_min_func;pub use traversal::is_max_func;pub use traversal::is_coalesce;pub use traversal::is_null_if;pub use traversal::is_cast;pub use traversal::is_try_cast;pub use traversal::is_safe_cast;pub use traversal::is_case;pub use traversal::is_from;pub use traversal::is_join;pub use traversal::is_where;pub use traversal::is_group_by;pub use traversal::is_having;pub use traversal::is_order_by;pub use traversal::is_limit;pub use traversal::is_offset;pub use traversal::is_with;pub use traversal::is_cte;pub use traversal::is_alias;pub use traversal::is_paren;pub use traversal::is_ordered;pub use traversal::is_create_table;pub use traversal::is_drop_table;pub use traversal::is_alter_table;pub use traversal::is_create_index;pub use traversal::is_drop_index;pub use traversal::is_create_view;pub use traversal::is_drop_view;pub use traversal::is_query;pub use traversal::is_set_operation;pub use traversal::is_comparison;pub use traversal::is_arithmetic;pub use traversal::is_logical;pub use traversal::is_ddl;pub use ast_transforms::add_select_columns;pub use ast_transforms::remove_select_columns;pub use ast_transforms::set_distinct;pub use ast_transforms::add_where;pub use ast_transforms::remove_where;pub use ast_transforms::set_limit;pub use ast_transforms::set_offset;pub use ast_transforms::remove_limit_offset;pub use ast_transforms::rename_columns;pub use ast_transforms::rename_tables;pub use ast_transforms::qualify_columns;pub use ast_transforms::replace_nodes;pub use ast_transforms::replace_by_type;pub use ast_transforms::remove_nodes;pub use ast_transforms::get_column_names;pub use ast_transforms::get_table_names;pub use ast_transforms::get_identifiers;pub use ast_transforms::get_functions;pub use ast_transforms::get_literals;pub use ast_transforms::get_subqueries;pub use ast_transforms::get_aggregate_functions;pub use ast_transforms::get_window_functions;pub use ast_transforms::node_count;pub use trie::new_trie;pub use trie::new_trie_from_keys;pub use trie::Trie;pub use trie::TrieResult;pub use optimizer::annotate_types;pub use optimizer::annotate_types;pub use optimizer::TypeAnnotator;pub use optimizer::TypeCoercionClass;
Modules§
- ast_
transforms - AST transform helpers and convenience getters.
- builder
- Fluent SQL Builder API
- dialects
- SQL Dialect System
- diff
- AST Diff - Compare SQL expressions
- error
- Error types for polyglot-sql
- expressions
- SQL Expression AST (Abstract Syntax Tree).
- generator
- SQL Generator – converts an AST back into SQL strings.
- helper
- Helper utilities for SQL processing
- lineage
- Column Lineage Tracking
- optimizer
- SQL Optimizer Module
- parser
- SQL Parser – recursive-descent parser that converts a token stream into an AST.
- planner
- Query Execution Planner
- resolver
- Column Resolver Module
- schema
- Schema management for SQL queries
- scope
- Scope Analysis Module
- time
- Time format conversion utilities
- tokens
- Token types and tokenization for SQL parsing
- transforms
- SQL AST Transforms
- traversal
- Tree traversal utilities for SQL expression ASTs.
- trie
- Trie data structure for efficient prefix matching
Functions§
- generate
- Generate SQL from an AST.
- generate_
by_ name - Generate SQL from an AST using a string dialect name.
- parse
- Parse SQL into an AST.
- parse_
by_ name - Parse SQL into an AST using a string dialect name.
- parse_
one - Parse a single SQL statement.
- transpile
- Transpile SQL from one dialect to another.
- transpile_
by_ name - Transpile SQL from one dialect to another, using string dialect names.
- validate
- Validate SQL syntax.