1use crate::ast::{
15 AlterTableAction, AlterTableStmt, AlterViewAction, AlterViewKind, AlterViewStmt, DeleteStmt,
16 DropKind, DropStmt, Expr, Statement, TableKeyConstraint, TableKeyConstraintKind,
17 TransactionStmt, UpdateStmt,
18};
19use crate::error::{Result, SQLError};
20use pg_query::protobuf::{Node, RangeVar};
21use pg_query::NodeEnum;
22use types::compile_pg_type_name;
23
24mod administrative;
25mod composites;
26mod cursors;
27mod dispatch;
28mod dml;
29mod domains;
30mod drop_alter;
31mod enums;
32mod events;
33mod foreign_servers;
34mod foreign_tables;
35mod foreign_wrappers;
36mod hierarchy;
37mod locking;
38mod merge;
39mod names;
40mod relations;
41mod returning;
42mod routines;
43mod schema_moves;
44mod sequences;
45mod tree;
46mod type_lifecycle;
47mod types;
48
49pub use dispatch::{
50 compile, parse_statements, plan_only_for_test, resolve_deferred_create_table, ParsedStatement,
51};
52pub use foreign_tables::resolve_deferred_create_foreign_table;
53pub(crate) use types::compile_retained_type_declaration;
54pub(crate) use types::compile_retained_type_reference;
55pub(crate) use types::parse_regobject_name_with_control;
56pub use types::{
57 parse_regobject_name, parse_regprocedure_name, parse_regtype_name, ParsedRegprocedureName,
58 ParsedRegtypeName,
59};
60
61pub(crate) fn compile_pg_expression(node: &Node) -> Result<Expr> {
62 compile_expr(node)
63}
64
65pub(crate) fn compile_pg_projections(nodes: &[Node]) -> Result<Vec<crate::ast::Projection>> {
66 compile_projections(nodes)
67}
68
69pub(crate) fn compile_pg_select(
70 select: &pg_query::protobuf::SelectStmt,
71) -> Result<crate::ast::SelectStmt> {
72 compile_select(select)
73}
74
75pub(in crate::compiler) use hierarchy::compile_table_hierarchy;
76pub(super) use names::{
77 compile_on_commit, compile_qualified_name, range_var_alias, range_var_name,
78 relation_persistence, validate_create_table_envelope,
79};
80pub(crate) use names::{render_relation_component, write_relation_component};
81pub(in crate::compiler) use returning::compile_returning_clause;
82
83use tree::{
84 compile_create_index, compile_create_table, compile_expr, compile_from_node, compile_insert,
85 compile_projections, compile_select, compile_values_lists, compile_with_clause, extract_string,
86};
87
88#[cfg(test)]
89mod tests;