1#![allow(clippy::result_large_err)]
5#![allow(clippy::new_ret_no_self)]
9#![allow(clippy::should_implement_trait)]
13#![allow(clippy::wrong_self_convention)]
14
15pub mod advanced;
164pub mod async_optimize;
165pub mod batch;
166pub mod builder;
167pub mod cache;
168pub mod connection;
169pub mod cte;
170pub mod data;
171#[allow(dead_code, unused_imports)]
172pub mod data_cache;
173pub mod db_optimize;
174pub mod dialect;
175pub mod error;
176pub mod extension;
177pub mod filter;
178pub mod intern;
179pub mod introspection;
180pub mod json;
181pub mod lazy;
182pub mod logging;
183#[macro_use]
184pub mod macros;
185pub mod mem_optimize;
186pub mod memory;
187pub mod middleware;
188pub mod nested;
189pub mod operations;
190pub mod pagination;
191pub mod partition;
192pub mod pool;
193pub mod procedure;
194pub mod profiling;
195pub mod query;
196pub mod raw;
197pub mod relations;
198pub mod replication;
199pub mod row;
200pub mod search;
201pub mod security;
202pub mod sequence;
203pub mod sql;
204pub mod static_filter;
205pub mod tenant;
206pub mod traits;
207pub mod transaction;
208pub mod trigger;
209pub mod typed_filter;
210pub mod types;
211pub mod upsert;
212pub mod window;
213pub mod zero_copy;
214
215pub use error::{ErrorCode, ErrorContext, QueryError, QueryResult, Suggestion};
216pub use extension::{Extension, ExtensionBuilder, Point, Polygon};
217pub use filter::{
218 AndFilterBuilder, FieldName, Filter, FilterValue, FluentFilterBuilder, LargeValueList,
219 OrFilterBuilder, ScalarFilter, SmallValueList, ToFilterValue, ValueList,
220};
221pub use json::{JsonAgg, JsonFilter, JsonIndex, JsonIndexBuilder, JsonOp, JsonPath, PathSegment};
222pub use nested::{NestedWrite, NestedWriteBuilder, NestedWriteOp, NestedWriteOperations};
223pub use operations::{
224 AggregateField,
225 AggregateOperation,
226 AggregateResult,
227 CountOperation,
228 CreateManyOperation,
229 CreateOperation,
230 DeleteManyOperation,
231 DeleteOperation,
232 FindFirstOperation,
233 FindManyOperation,
234 FindUniqueOperation,
235 GroupByOperation,
236 GroupByResult,
237 HavingCondition,
238 HavingOp,
239 MaterializedViewAccessor,
241 RefreshMaterializedViewOperation,
242 UpdateManyOperation,
243 UpdateOperation,
244 UpsertOperation,
245 ViewAccessor,
246 ViewCountOperation,
247 ViewFindFirstOperation,
248 ViewFindManyOperation,
249 ViewQueryBuilder,
250 having,
251};
252pub use pagination::{Cursor, CursorDirection, Pagination};
253pub use partition::{
254 HashPartitionDef, ListPartitionDef, Partition, PartitionBuilder, PartitionDef, PartitionType,
255 RangeBound, RangePartitionDef,
256};
257pub use procedure::{
258 Parameter, ParameterMode, ProcedureCall, ProcedureCallOperation, ProcedureEngine,
259 ProcedureResult,
260};
261pub use query::QueryBuilder;
262pub use raw::{RawExecuteOperation, RawQueryOperation, Sql};
263pub use relations::{
264 Include, IncludeSpec, RelationKind, RelationLoader, RelationMeta, RelationSpec, SelectSpec,
265};
266pub use search::{
267 FullTextIndex, FullTextIndexBuilder, FuzzyOptions, HighlightOptions, RankingOptions,
268 SearchLanguage, SearchMode, SearchQuery, SearchQueryBuilder, SearchSql,
269};
270pub use security::{
271 ConnectionProfile, ConnectionProfileBuilder, DataMask, Grant, GrantBuilder, GrantObject,
272 MaskFunction, PolicyCommand, Privilege, RlsPolicy, RlsPolicyBuilder, Role, RoleBuilder,
273 TenantPolicy, TenantSource,
274};
275pub use sequence::{OwnedBy, Sequence, SequenceBuilder};
276pub use traits::{
277 Executable, IntoFilter, MaterializedView, Model, ModelRelationLoader, ModelWithPk, QueryEngine,
278 View, ViewQueryEngine,
279};
280pub use transaction::{IsolationLevel, Transaction, TransactionConfig};
281pub use trigger::{
282 Trigger, TriggerAction, TriggerBuilder, TriggerCondition, TriggerEvent, TriggerLevel,
283 TriggerTiming, UpdateOf,
284};
285pub use types::{
286 NullsOrder, OrderBy, OrderByBuilder, OrderByField, Select, SortOrder, order_patterns,
287};
288pub use upsert::{
289 Assignment, AssignmentValue, ConflictAction, ConflictTarget, UpdateSpec, Upsert, UpsertBuilder,
290};
291pub use window::{
292 FrameBound, FrameClause, FrameExclude, FrameType, NamedWindow, NullsPosition, OrderSpec,
293 WindowFn, WindowFunction, WindowFunctionBuilder, WindowSpec,
294};
295
296pub use middleware::{
298 LoggingMiddleware, MetricsMiddleware, Middleware, MiddlewareBuilder, MiddlewareChain,
299 MiddlewareStack, QueryContext, QueryMetadata, QueryMetrics, QueryType, RetryMiddleware,
300 TimingMiddleware,
301};
302
303pub use dialect::{Mssql, Mysql, NotSql, Postgres, SqlDialect, Sqlite};
305
306pub use connection::{
308 ConnectionError, ConnectionOptions, ConnectionString, DatabaseConfig, Driver, EnvExpander,
309 MultiDatabaseConfig, PoolConfig, PoolOptions, SslConfig, SslMode,
310};
311pub use cte::{
312 Cte, CteBuilder, CycleClause, Materialized, SearchClause, SearchMethod, WithClause,
313 WithQueryBuilder,
314};
315
316pub use advanced::{
318 BulkOperation, DistinctOn, LateralJoin, LateralJoinBuilder, LateralJoinType, LockStrength,
319 LockWait, ReturnOperation, Returning, ReturningColumn, RowLock, RowLockBuilder, SampleMethod,
320 SampleSize, TableSample, TableSampleBuilder,
321};
322
323pub use data::{
325 BatchCreate, ConnectData, CreateData, DataBuilder, FieldValue, IntoData, UpdateData,
326};
327
328pub use introspection::{
330 CheckConstraint, ColumnInfo, DatabaseSchema, EnumInfo, ForeignKeyInfo, IndexColumn, IndexInfo,
331 NormalizedType, ReferentialAction, SequenceInfo, TableInfo, UniqueConstraint, ViewInfo,
332 generate_prax_schema, normalize_type,
333};
334
335pub use tenant::{
337 DynamicResolver, IsolationStrategy, RowLevelConfig, SchemaConfig, StaticResolver, TenantConfig,
338 TenantConfigBuilder, TenantContext, TenantId, TenantInfo, TenantMiddleware, TenantResolver,
339};
340
341pub use intern::{clear_interned, fields, intern, intern_cow, interned_count};
343
344pub use pool::{FilterBuilder, FilterPool, IntoPooledValue, PooledFilter, PooledValue};
346
347pub use sql::{
349 AdvancedQueryCapacity, CachedSql, DatabaseType, FastSqlBuilder, LazySql, QueryCapacity,
350 SqlBuilder, SqlTemplateCache as SqlCache, global_sql_cache, keywords, templates,
351};
352
353pub use builder::{
355 BuilderPool,
356 ColumnList,
357 ColumnNameList,
358 CowColumnList,
359 CowIdentifier,
360 ExprList,
361 FrameBound as BuilderFrameBound,
363 FrameType as BuilderFrameType,
364 Identifier,
365 OptimizedWindowSpec,
366 OrderByList,
367 PartitionByList,
368 ReusableBuilder,
369 WindowFrame,
370};
371
372pub use db_optimize::{
374 BatchConfig, CachedStatement, IndexHint, IndexHintType, JoinHint, JoinMethod,
375 MongoPipelineBuilder, PipelineStage, PreparedStatementCache, PreparedStatementStats,
376 QueryHints, global_statement_cache,
377};
378
379pub use zero_copy::{
381 CteRef, FrameBoundRef, FrameRef, FrameTypeRef, JsonPathRef, PathSegmentRef, WindowSpecRef,
382 WithClauseRef,
383};
384
385pub use cache::{
387 CacheStats, CachedQuery, ExecutionPlan, ExecutionPlanCache, PlanHint, QueryCache, QueryHash,
388 QueryKey, SqlTemplate, SqlTemplateCache, get_global_template, global_template_cache,
389 patterns as cache_patterns, precompute_query_hash, register_global_template,
390};
391
392pub use batch::{
394 Batch, BatchBuilder, BatchOperation, BatchResult, OperationResult, Pipeline, PipelineBuilder,
395 PipelineQuery, PipelineResult, QueryResult as PipelineQueryResult,
396};
397
398pub use row::{FromColumn, FromRow, FromRowRef, RowData, RowError, RowRef, RowRefIter};
400
401pub use lazy::{Lazy, LazyRelation, ManyToOneLoader, OneToManyLoader};
403
404pub use static_filter::{
406 CompactValue, StaticFilter, and2, and3, and4, and5, contains, ends_with, eq,
407 fields as static_fields, gt, gte, in_list, is_not_null, is_null, lt, lte, ne, not, not_in_list,
408 or2, or3, or4, or5, starts_with,
409};
410
411pub use typed_filter::{
413 And, AndN, Contains, DirectSql, EndsWith, Eq, Gt, Gte, InI64, InI64Slice, InStr, InStrSlice,
414 IsNotNull, IsNull, LazyFilter, Lt, Lte, Maybe, Ne, Not as TypedNot, NotInI64Slice, Or, OrN,
415 StartsWith, TypedFilter, and_n, eq as typed_eq, gt as typed_gt, gte as typed_gte,
416 in_i64 as typed_in_i64, in_i64_slice, in_str as typed_in_str, in_str_slice,
417 is_not_null as typed_is_not_null, is_null as typed_is_null, lazy, lt as typed_lt,
418 lte as typed_lte, ne as typed_ne, not_in_i64_slice, or_n,
419};
420
421pub use memory::{
423 BufferPool, CompactFilter, GLOBAL_BUFFER_POOL, GLOBAL_STRING_POOL, MemoryStats, PoolStats,
424 PooledBuffer, StringPool, get_buffer, intern as memory_intern,
425};
426
427pub use logging::{
429 get_log_format, get_log_level, init as init_logging, init_debug, init_with_level,
430 is_debug_enabled,
431};
432
433pub use replication::{
435 ConnectionRouter, HealthStatus, LagMeasurement, LagMonitor, ReadPreference, ReplicaConfig,
436 ReplicaHealth, ReplicaRole, ReplicaSetBuilder, ReplicaSetConfig,
437};
438
439pub use async_optimize::{
441 ConcurrencyConfig, ConcurrentExecutor, ExecutionStats, IntrospectionConfig,
442 IntrospectionResult, PipelineConfig, PipelineError, PipelineResult as AsyncPipelineResult,
443 QueryPipeline, TaskError, TaskResult,
444 concurrent::execute_batch as async_execute_batch,
445 concurrent::execute_chunked as async_execute_chunked,
446 introspect::{
447 BatchIntrospector, ColumnMetadata, ConcurrentIntrospector, ForeignKeyMetadata,
448 IndexMetadata, IntrospectionError, IntrospectionPhase, IntrospectorBuilder, TableMetadata,
449 },
450 pipeline::{BulkInsertPipeline, BulkUpdatePipeline, SimulatedExecutor},
451};
452
453pub use mem_optimize::{
455 GlobalInterner, IdentifierCache, InternedStr, ScopedInterner,
456 arena::{ArenaScope, ArenaStats, QueryArena, ScopedFilter, ScopedQuery, ScopedValue},
457 interning::{get_interned, intern as global_intern, intern_component, intern_qualified},
458 lazy::{LazyColumn, LazyForeignKey, LazyIndex, LazySchema, LazySchemaStats, LazyTable},
459};
460
461pub use profiling::{
463 AllocationRecord, AllocationStats, AllocationTracker, HeapProfiler, HeapReport, HeapStats,
464 LeakDetector, LeakReport, LeakSeverity, MemoryProfiler, MemoryReport, MemorySnapshot,
465 PotentialLeak, SnapshotDiff, TrackedAllocator, disable_profiling, enable_profiling,
466 is_profiling_enabled, with_profiling,
467};
468
469pub use smallvec;
471
472pub mod prelude {
474 pub use crate::advanced::{LateralJoin, Returning, RowLock, TableSample};
475 pub use crate::cte::{Cte, CteBuilder, WithClause};
476 pub use crate::error::{QueryError, QueryResult};
477 pub use crate::extension::{Extension, Point, Polygon};
478 pub use crate::filter::{Filter, FilterValue, ScalarFilter};
479 pub use crate::introspection::{DatabaseSchema, TableInfo, generate_prax_schema};
480 pub use crate::json::{JsonFilter, JsonOp, JsonPath};
481 pub use crate::nested::{
482 NestedWrite, NestedWriteBuilder, NestedWriteOp, NestedWriteOperations,
483 };
484 pub use crate::operations::*;
485 pub use crate::pagination::{Cursor, CursorDirection, Pagination};
486 pub use crate::partition::{Partition, PartitionBuilder, PartitionType, RangeBound};
487 pub use crate::procedure::{
488 Parameter, ParameterMode, ProcedureCall, ProcedureEngine, ProcedureResult,
489 };
490 pub use crate::query::QueryBuilder;
491 pub use crate::raw::{RawExecuteOperation, RawQueryOperation, Sql};
492 pub use crate::raw_query;
493 pub use crate::relations::{Include, IncludeSpec, RelationSpec, SelectSpec};
494 pub use crate::replication::{ConnectionRouter, ReadPreference, ReplicaSetConfig};
495 pub use crate::search::{FullTextIndex, SearchMode, SearchQuery, SearchQueryBuilder};
496 pub use crate::security::{Grant, GrantBuilder, RlsPolicy, Role, RoleBuilder};
497 pub use crate::sequence::{Sequence, SequenceBuilder};
498 pub use crate::traits::{
499 Executable, IntoFilter, MaterializedView, Model, QueryEngine, View, ViewQueryEngine,
500 };
501 pub use crate::transaction::{IsolationLevel, Transaction, TransactionConfig};
502 pub use crate::trigger::{
503 Trigger, TriggerAction, TriggerBuilder, TriggerCondition, TriggerEvent, TriggerLevel,
504 TriggerTiming,
505 };
506 pub use crate::types::{OrderBy, Select, SortOrder};
507 pub use crate::upsert::{ConflictAction, ConflictTarget, Upsert, UpsertBuilder};
508 pub use crate::window::{WindowFn, WindowFunction, WindowSpec};
509
510 pub use crate::tenant::{IsolationStrategy, TenantConfig, TenantContext, TenantMiddleware};
512
513 pub use crate::async_optimize::{
515 ConcurrencyConfig, ConcurrentExecutor, IntrospectionConfig, PipelineConfig, QueryPipeline,
516 };
517
518 pub use crate::mem_optimize::{GlobalInterner, InternedStr, LazySchema, QueryArena};
520
521 pub use crate::profiling::{
523 LeakDetector, MemoryProfiler, MemorySnapshot, enable_profiling, with_profiling,
524 };
525}