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 ast_transforms::add_select_columns;pub use ast_transforms::add_where;pub use ast_transforms::get_aggregate_functions;pub use ast_transforms::get_column_names;pub use ast_transforms::get_functions;pub use ast_transforms::get_identifiers;pub use ast_transforms::get_literals;pub use ast_transforms::get_output_column_names;pub use ast_transforms::get_subqueries;pub use ast_transforms::get_table_names;pub use ast_transforms::get_window_functions;pub use ast_transforms::node_count;pub use ast_transforms::qualify_columns;pub use ast_transforms::remove_limit_offset;pub use ast_transforms::remove_nodes;pub use ast_transforms::remove_select_columns;pub use ast_transforms::remove_where;pub use ast_transforms::rename_columns;pub use ast_transforms::rename_tables;pub use ast_transforms::replace_by_type;pub use ast_transforms::replace_nodes;pub use ast_transforms::set_distinct;pub use ast_transforms::set_limit;pub use ast_transforms::set_offset;pub use dialects::unregister_custom_dialect;pub use dialects::CustomDialectBuilder;pub use dialects::Dialect;pub use dialects::DialectType;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 function_catalog::FunctionCatalog;pub use function_catalog::FunctionNameCase;pub use function_catalog::FunctionSignature;pub use function_catalog::HashMapFunctionCatalog;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 optimizer::annotate_types;pub use optimizer::annotate_types;pub use optimizer::TypeAnnotator;pub use optimizer::TypeCoercionClass;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_add;pub use traversal::is_aggregate;pub use traversal::is_alias;pub use traversal::is_alter_table;pub use traversal::is_and;pub use traversal::is_arithmetic;pub use traversal::is_avg;pub use traversal::is_between;pub use traversal::is_boolean;pub use traversal::is_case;pub use traversal::is_cast;pub use traversal::is_coalesce;pub use traversal::is_column;pub use traversal::is_comparison;pub use traversal::is_concat;pub use traversal::is_count;pub use traversal::is_create_index;pub use traversal::is_create_table;pub use traversal::is_create_view;pub use traversal::is_cte;pub use traversal::is_ddl;pub use traversal::is_delete;pub use traversal::is_div;pub use traversal::is_drop_index;pub use traversal::is_drop_table;pub use traversal::is_drop_view;pub use traversal::is_eq;pub use traversal::is_except;pub use traversal::is_exists;pub use traversal::is_from;pub use traversal::is_function;pub use traversal::is_group_by;pub use traversal::is_gt;pub use traversal::is_gte;pub use traversal::is_having;pub use traversal::is_identifier;pub use traversal::is_ilike;pub use traversal::is_in;pub use traversal::is_insert;pub use traversal::is_intersect;pub use traversal::is_is_null;pub use traversal::is_join;pub use traversal::is_like;pub use traversal::is_limit;pub use traversal::is_literal;pub use traversal::is_logical;pub use traversal::is_lt;pub use traversal::is_lte;pub use traversal::is_max_func;pub use traversal::is_min_func;pub use traversal::is_mod;pub use traversal::is_mul;pub use traversal::is_neq;pub use traversal::is_not;pub use traversal::is_null_if;pub use traversal::is_null_literal;pub use traversal::is_offset;pub use traversal::is_or;pub use traversal::is_order_by;pub use traversal::is_ordered;pub use traversal::is_paren;pub use traversal::is_query;pub use traversal::is_safe_cast;pub use traversal::is_select;pub use traversal::is_set_operation;pub use traversal::is_star;pub use traversal::is_sub;pub use traversal::is_subquery;pub use traversal::is_sum;pub use traversal::is_table;pub use traversal::is_try_cast;pub use traversal::is_union;pub use traversal::is_update;pub use traversal::is_where;pub use traversal::is_window_function;pub use traversal::is_with;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 trie::new_trie;pub use trie::new_trie_from_keys;pub use trie::Trie;pub use trie::TrieResult;pub use validation::mapping_schema_from_validation_schema;pub use validation::validate_with_schema;pub use validation::SchemaColumn;pub use validation::SchemaColumnReference;pub use validation::SchemaForeignKey;pub use validation::SchemaTable;pub use validation::SchemaTableReference;pub use validation::SchemaValidationOptions;pub use validation::ValidationSchema;
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).
- function_
catalog - 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
- validation
- Schema-aware and semantic SQL validation.
Structs§
- Format
Guard Options - Guard options for SQL pretty-formatting.
- Validation
Options - Options for syntax validation behavior.
Functions§
- format
- Format/pretty-print SQL statements.
- format_
by_ name - Format SQL using a string dialect name.
- format_
with_ options - Format/pretty-print SQL statements with configurable guard limits.
- format_
with_ options_ by_ name - Format SQL using a string dialect name with configurable guard limits.
- 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.
- validate_
with_ options - Validate SQL syntax with additional validation options.