1pub mod ast;
31pub mod config;
32pub mod error;
33pub mod traits;
34pub mod visitor;
35
36pub mod nom_backend;
37
38#[cfg(feature = "write-support")]
39pub mod mutation_parser;
40
41pub mod factory;
42pub mod schema_integration;
43
44pub use ast::{
45 CqlAssignment, CqlAssignmentOperator, CqlBinaryOperator, CqlColumnDef, CqlCreateTable,
46 CqlDataType, CqlDelete, CqlDropTable, CqlExpression, CqlIdentifier, CqlInsert, CqlInsertValues,
47 CqlLiteral, CqlOrderBy, CqlPrimaryKey, CqlSelect, CqlSelectItem, CqlSortDirection,
48 CqlStatement, CqlTable, CqlTableOptions, CqlUnaryOperator, CqlUpdate, CqlUsing,
49};
50pub use config::{
51 MemorySettings, ParserBackend, ParserConfig, ParserFeature as ConfigFeature,
52 PerformanceSettings, SecuritySettings,
53};
54pub use error::{ErrorCategory as ParserErrorCategory, ErrorSeverity, ParserError, ParserWarning};
55pub use factory::{register_global_factory, ParserFactory, ParserRegistry, UseCase};
56pub use schema_integration::{
57 extract_table_name_enhanced, parse_cql_schema_enhanced, parse_cql_schema_fast,
58 parse_cql_schema_simple, parse_cql_schema_strict, parse_cql_schemas_batch,
59 table_name_matches_enhanced, validate_cql_schema_syntax, SchemaParserConfig,
60};
61pub use traits::{
62 CqlParser, CqlParserFactory, CqlVisitor, FactoryInfo, ParserBackendInfo, ParserFeature,
63 PerformanceCharacteristics, SourcePosition,
64};
65pub use visitor::{
66 DefaultVisitor, IdentifierCollector, SchemaBuilderVisitor, SemanticValidator,
67 TypeCollectorVisitor, ValidationVisitor,
68};
69
70#[allow(deprecated)]
71pub use schema_integration::parse_cql_schema_compat;
72
73pub use nom_backend::NomParser;
74
75pub use crate::error::Result as CqlResult;
76
77use crate::error::Result;
78use std::sync::Arc;
79
80pub fn create_default_parser() -> Result<Arc<dyn CqlParser + Send + Sync>> {
82 ParserFactory::create_default()
83}
84
85pub fn is_dml_statement(s: &str) -> bool {
106 let upper = s.trim().to_uppercase();
107 upper.starts_with("INSERT")
108 || upper.starts_with("UPDATE")
109 || upper.starts_with("DELETE")
110 || upper.starts_with("BEGIN")
111}