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 capabilities;
169pub mod connection;
170pub mod cte;
171pub mod data;
172#[allow(dead_code, unused_imports)]
173pub mod data_cache;
174pub mod db_optimize;
175pub mod dialect;
176pub mod error;
177pub mod extension;
178pub mod filter;
179pub mod inputs;
180pub mod intern;
181pub mod introspection;
182pub mod json;
183pub mod lazy;
184pub mod logging;
185#[macro_use]
186pub mod macros;
187pub mod mem_optimize;
188pub mod memory;
189pub mod middleware;
190pub mod nested;
191pub mod operations;
192pub mod pagination;
193pub mod partition;
194pub mod pool;
195pub mod procedure;
196pub mod profiling;
197pub mod projection;
198pub mod query;
199pub mod raw;
200pub mod relations;
201pub mod replication;
202pub mod row;
203pub mod search;
204pub mod security;
205pub mod sequence;
206pub mod sql;
207pub mod static_filter;
208pub mod tenant;
209pub mod traits;
210pub mod transaction;
211pub mod trigger;
212pub mod typed_filter;
213pub mod types;
214pub mod upsert;
215pub mod window;
216pub mod zero_copy;
217
218#[doc(hidden)]
224pub use base64;
225pub use error::{ErrorCode, ErrorContext, QueryError, QueryResult, Suggestion};
226pub use extension::{Extension, ExtensionBuilder, Point, Polygon};
227pub use filter::{
228 AndFilterBuilder, FieldName, Filter, FilterValue, FluentFilterBuilder, LargeValueList,
229 OrFilterBuilder, ScalarFilter, SmallValueList, ToFilterValue, ValueList,
230};
231pub use json::{JsonAgg, JsonFilter, JsonIndex, JsonIndexBuilder, JsonOp, JsonPath, PathSegment};
232pub use nested::{NestedWrite, NestedWriteBuilder, NestedWriteOp, NestedWriteOperations};
233pub use operations::{
234 AggregateField,
235 AggregateOperation,
236 AggregateResult,
237 CountOperation,
238 CountSelectMode,
239 CreateManyOperation,
240 CreateOperation,
241 DeleteManyOperation,
242 DeleteOperation,
243 FindFirstOperation,
244 FindManyOperation,
245 FindUniqueOperation,
246 GroupByOperation,
247 GroupByResult,
248 HavingCondition,
249 HavingOp,
250 MaterializedViewAccessor,
252 RefreshMaterializedViewOperation,
253 UpdateManyOperation,
254 UpdateOperation,
255 UpsertOperation,
256 ViewAccessor,
257 ViewCountOperation,
258 ViewFindFirstOperation,
259 ViewFindManyOperation,
260 ViewQueryBuilder,
261 having,
262};
263pub use pagination::{Cursor, CursorDirection, Pagination};
264pub use partition::{
265 HashPartitionDef, ListPartitionDef, Partition, PartitionBuilder, PartitionDef, PartitionType,
266 RangeBound, RangePartitionDef,
267};
268pub use procedure::{
269 Parameter, ParameterMode, ProcedureCall, ProcedureCallOperation, ProcedureEngine,
270 ProcedureResult,
271};
272pub use projection::ScalarProjection;
273pub use query::QueryBuilder;
274pub use raw::{RawExecuteOperation, RawQueryOperation, Sql};
275pub use relations::{
276 Include, IncludeSpec, RelationKind, RelationLoader, RelationMeta, RelationSpec, SelectSpec,
277};
278pub use search::{
279 FullTextIndex, FullTextIndexBuilder, FuzzyOptions, HighlightOptions, RankingOptions,
280 SearchLanguage, SearchMode, SearchQuery, SearchQueryBuilder, SearchSql,
281};
282pub use security::{
283 ConnectionProfile, ConnectionProfileBuilder, DataMask, Grant, GrantBuilder, GrantObject,
284 MaskFunction, PolicyCommand, Privilege, RlsPolicy, RlsPolicyBuilder, Role, RoleBuilder,
285 TenantPolicy, TenantSource,
286};
287pub use sequence::{OwnedBy, Sequence, SequenceBuilder};
288pub use traits::{
289 Executable, IntoFilter, MaterializedView, Model, ModelRelationLoader, ModelWithPk, QueryEngine,
290 View, ViewQueryEngine,
291};
292pub use transaction::{IsolationLevel, Transaction, TransactionConfig};
293pub use trigger::{
294 Trigger, TriggerAction, TriggerBuilder, TriggerCondition, TriggerEvent, TriggerLevel,
295 TriggerTiming, UpdateOf,
296};
297pub use types::{
298 NullsOrder, OrderBy, OrderByBuilder, OrderByField, Select, SortOrder, order_patterns,
299};
300pub use upsert::{
301 Assignment, AssignmentValue, ConflictAction, ConflictTarget, UpdateSpec, Upsert, UpsertBuilder,
302};
303pub use window::{
304 FrameBound, FrameClause, FrameExclude, FrameType, NamedWindow, NullsPosition, OrderSpec,
305 WindowFn, WindowFunction, WindowFunctionBuilder, WindowSpec,
306};
307
308pub use middleware::{
310 LoggingMiddleware, MetricsMiddleware, Middleware, MiddlewareBuilder, MiddlewareChain,
311 MiddlewareStack, QueryContext, QueryMetadata, QueryMetrics, QueryType, RetryMiddleware,
312 TimingMiddleware,
313};
314
315pub use dialect::{Mssql, Mysql, NotSql, Postgres, SqlDialect, Sqlite};
317
318pub use connection::{
320 ConnectionError, ConnectionOptions, ConnectionString, DatabaseConfig, Driver, EnvExpander,
321 MultiDatabaseConfig, PoolConfig, PoolOptions, SslConfig, SslMode,
322};
323pub use cte::{
324 Cte, CteBuilder, CycleClause, Materialized, SearchClause, SearchMethod, WithClause,
325 WithQueryBuilder,
326};
327
328pub use advanced::{
330 BulkOperation, DistinctOn, LateralJoin, LateralJoinBuilder, LateralJoinType, LockStrength,
331 LockWait, ReturnOperation, Returning, ReturningColumn, RowLock, RowLockBuilder, SampleMethod,
332 SampleSize, TableSample, TableSampleBuilder,
333};
334
335pub use data::{
337 BatchCreate, ConnectData, CreateData, DataBuilder, FieldValue, IntoData, UpdateData,
338};
339
340pub use introspection::{
342 CheckConstraint, ColumnInfo, DatabaseSchema, EnumInfo, ForeignKeyInfo, IndexColumn, IndexInfo,
343 NormalizedType, ReferentialAction, SequenceInfo, TableInfo, UniqueConstraint, ViewInfo,
344 generate_prax_schema, normalize_type,
345};
346
347pub use tenant::{
349 DynamicResolver, IsolationStrategy, RowLevelConfig, SchemaConfig, StaticResolver, TenantConfig,
350 TenantConfigBuilder, TenantContext, TenantId, TenantInfo, TenantMiddleware, TenantResolver,
351};
352
353pub use intern::{clear_interned, fields, intern, intern_cow, interned_count};
355
356pub use pool::{FilterBuilder, FilterPool, IntoPooledValue, PooledFilter, PooledValue};
358
359pub use sql::{
361 AdvancedQueryCapacity, CachedSql, DatabaseType, FastSqlBuilder, LazySql, QueryCapacity,
362 SqlBuilder, SqlTemplateCache as SqlCache, global_sql_cache, keywords, templates,
363};
364
365pub use builder::{
367 BuilderPool,
368 ColumnList,
369 ColumnNameList,
370 CowColumnList,
371 CowIdentifier,
372 ExprList,
373 FrameBound as BuilderFrameBound,
375 FrameType as BuilderFrameType,
376 Identifier,
377 OptimizedWindowSpec,
378 OrderByList,
379 PartitionByList,
380 ReusableBuilder,
381 WindowFrame,
382};
383
384pub use db_optimize::{
386 BatchConfig, CachedStatement, IndexHint, IndexHintType, JoinHint, JoinMethod,
387 MongoPipelineBuilder, PipelineStage, PreparedStatementCache, PreparedStatementStats,
388 QueryHints, global_statement_cache,
389};
390
391pub use zero_copy::{
393 CteRef, FrameBoundRef, FrameRef, FrameTypeRef, JsonPathRef, PathSegmentRef, WindowSpecRef,
394 WithClauseRef,
395};
396
397pub use cache::{
399 CacheStats, CachedQuery, ExecutionPlan, ExecutionPlanCache, PlanHint, QueryCache, QueryHash,
400 QueryKey, SqlTemplate, SqlTemplateCache, get_global_template, global_template_cache,
401 patterns as cache_patterns, precompute_query_hash, register_global_template,
402};
403
404pub use batch::{
406 Batch, BatchBuilder, BatchOperation, BatchResult, OperationResult, Pipeline, PipelineBuilder,
407 PipelineQuery, PipelineResult, QueryResult as PipelineQueryResult,
408};
409
410pub use row::{FromColumn, FromRow, FromRowRef, RowData, RowError, RowRef, RowRefIter};
412
413pub use lazy::{Lazy, LazyRelation, ManyToOneLoader, OneToManyLoader};
415
416pub use static_filter::{
418 CompactValue, StaticFilter, and2, and3, and4, and5, contains, ends_with, eq,
419 fields as static_fields, gt, gte, in_list, is_not_null, is_null, lt, lte, ne, not, not_in_list,
420 or2, or3, or4, or5, starts_with,
421};
422
423pub use typed_filter::{
425 And, AndN, Contains, DirectSql, EndsWith, Eq, Gt, Gte, InI64, InI64Slice, InStr, InStrSlice,
426 IsNotNull, IsNull, LazyFilter, Lt, Lte, Maybe, Ne, Not as TypedNot, NotInI64Slice, Or, OrN,
427 StartsWith, TypedFilter, and_n, eq as typed_eq, gt as typed_gt, gte as typed_gte,
428 in_i64 as typed_in_i64, in_i64_slice, in_str as typed_in_str, in_str_slice,
429 is_not_null as typed_is_not_null, is_null as typed_is_null, lazy, lt as typed_lt,
430 lte as typed_lte, ne as typed_ne, not_in_i64_slice, or_n,
431};
432
433pub use memory::{
435 BufferPool, CompactFilter, GLOBAL_BUFFER_POOL, GLOBAL_STRING_POOL, MemoryStats, PoolStats,
436 PooledBuffer, StringPool, get_buffer, intern as memory_intern,
437};
438
439pub use logging::{
441 get_log_format, get_log_level, init as init_logging, init_debug, init_with_level,
442 is_debug_enabled,
443};
444
445pub use replication::{
447 ConnectionRouter, HealthStatus, LagMeasurement, LagMonitor, ReadPreference, ReplicaConfig,
448 ReplicaHealth, ReplicaRole, ReplicaSetBuilder, ReplicaSetConfig,
449};
450
451pub use async_optimize::{
453 ConcurrencyConfig, ConcurrentExecutor, ExecutionStats, IntrospectionConfig,
454 IntrospectionResult, PipelineConfig, PipelineError, PipelineResult as AsyncPipelineResult,
455 QueryPipeline, TaskError, TaskResult,
456 concurrent::execute_batch as async_execute_batch,
457 concurrent::execute_chunked as async_execute_chunked,
458 introspect::{
459 BatchIntrospector, ColumnMetadata, ConcurrentIntrospector, ForeignKeyMetadata,
460 IndexMetadata, IntrospectionError, IntrospectionPhase, IntrospectorBuilder, TableMetadata,
461 },
462 pipeline::{BulkInsertPipeline, BulkUpdatePipeline, SimulatedExecutor},
463};
464
465pub use mem_optimize::{
467 GlobalInterner, IdentifierCache, InternedStr, ScopedInterner,
468 arena::{ArenaScope, ArenaStats, QueryArena, ScopedFilter, ScopedQuery, ScopedValue},
469 interning::{get_interned, intern as global_intern, intern_component, intern_qualified},
470 lazy::{LazyColumn, LazyForeignKey, LazyIndex, LazySchema, LazySchemaStats, LazyTable},
471};
472
473pub use profiling::{
475 AllocationRecord, AllocationStats, AllocationTracker, HeapProfiler, HeapReport, HeapStats,
476 LeakDetector, LeakReport, LeakSeverity, MemoryProfiler, MemoryReport, MemorySnapshot,
477 PotentialLeak, SnapshotDiff, TrackedAllocator, disable_profiling, enable_profiling,
478 is_profiling_enabled, with_profiling,
479};
480
481pub use smallvec;
483
484pub use crate::capabilities::{
486 SupportsArrayOps, SupportsCaseInsensitiveMode, SupportsCorrelatedSubquery,
487 SupportsFullTextSearch, SupportsGeneratedColumns, SupportsJsonPath, SupportsNestedWrites,
488 SupportsRelationFilter, SupportsScalarSubqueryInSelect,
489};
490pub use crate::inputs::{
491 AggregateArgs,
493 AggregateInput,
495 BigIntFieldUpdate,
497 BigIntFilter,
501 BigIntNullableFieldUpdate,
502 BigIntNullableFilter,
503 BoolFieldUpdate,
504 BoolFilter,
505 BoolNullableFieldUpdate,
506 BoolNullableFilter,
507 BytesFieldUpdate,
508 BytesFilter,
509 BytesNullableFieldUpdate,
510 BytesNullableFilter,
511 CountArgs,
512 CountSelect,
513 CreateArgs,
514 CreateInput,
515 CreateManyArgs,
516 CreatePayload,
518 DateFilter,
519 DateNullableFilter,
520 DateTimeFieldUpdate,
521 DateTimeFilter,
522 DateTimeNullableFieldUpdate,
523 DateTimeNullableFilter,
524 DecimalFieldUpdate,
525 DecimalFilter,
526 DecimalNullableFieldUpdate,
527 DecimalNullableFilter,
528 DeleteArgs,
529 DeleteManyArgs,
530 EnumFieldUpdate,
531 EnumFilter,
532 EnumNullableFieldUpdate,
533 EnumNullableFilter,
534 FindFirstArgs,
535 FindManyArgs,
536 FindUniqueArgs,
537 FloatFieldUpdate,
538 FloatFilter,
539 FloatNullableFieldUpdate,
540 FloatNullableFilter,
541 GroupByArgs,
542 GroupByInput,
543 IncludeInput,
544 IntFieldUpdate,
545 IntFilter,
546 IntNullableFieldUpdate,
547 IntNullableFilter,
548 JsonFieldUpdate,
549 JsonFilter as InputJsonFilter,
552 JsonNullableFieldUpdate,
553 JsonNullableFilter as InputJsonNullableFilter,
554 ListRelationFilter,
556 LowerRelationFilter,
557 OrderByInput,
558 PaginationInput,
559 QueryMode,
560 RelationFilterMeta,
561 ScalarFilter as InputScalarFilter,
562 SelectInput,
563 SingleRelationFilter,
564 StringFieldUpdate,
565 StringFilter,
566 StringNullableFieldUpdate,
567 StringNullableFilter,
568 TimeFilter,
569 TimeNullableFilter,
570 UpdateArgs,
571 UpdateInput,
572 UpdateManyArgs,
573 UpdatePayload,
574 UpsertArgs,
575 UuidFieldUpdate,
576 UuidFilter,
577 UuidNullableFieldUpdate,
578 UuidNullableFilter,
579 WhereInput,
580 WhereUniqueInput,
581 WriteOp,
582};
583
584pub mod prelude {
586 pub use crate::advanced::{LateralJoin, Returning, RowLock, TableSample};
587 pub use crate::cte::{Cte, CteBuilder, WithClause};
588 pub use crate::error::{QueryError, QueryResult};
589 pub use crate::extension::{Extension, Point, Polygon};
590 pub use crate::filter::{Filter, FilterValue, ScalarFilter};
591 pub use crate::introspection::{DatabaseSchema, TableInfo, generate_prax_schema};
592 pub use crate::json::{JsonFilter, JsonOp, JsonPath};
593 pub use crate::nested::{
594 NestedWrite, NestedWriteBuilder, NestedWriteOp, NestedWriteOperations,
595 };
596 pub use crate::operations::*;
597 pub use crate::pagination::{Cursor, CursorDirection, Pagination};
598 pub use crate::partition::{Partition, PartitionBuilder, PartitionType, RangeBound};
599 pub use crate::procedure::{
600 Parameter, ParameterMode, ProcedureCall, ProcedureEngine, ProcedureResult,
601 };
602 pub use crate::query::QueryBuilder;
603 pub use crate::raw::{RawExecuteOperation, RawQueryOperation, Sql};
604 pub use crate::raw_query;
605 pub use crate::relations::{Include, IncludeSpec, RelationSpec, SelectSpec};
606 pub use crate::replication::{ConnectionRouter, ReadPreference, ReplicaSetConfig};
607 pub use crate::search::{FullTextIndex, SearchMode, SearchQuery, SearchQueryBuilder};
608 pub use crate::security::{Grant, GrantBuilder, RlsPolicy, Role, RoleBuilder};
609 pub use crate::sequence::{Sequence, SequenceBuilder};
610 pub use crate::traits::{
611 Executable, IntoFilter, MaterializedView, Model, QueryEngine, View, ViewQueryEngine,
612 };
613 pub use crate::transaction::{IsolationLevel, Transaction, TransactionConfig};
614 pub use crate::trigger::{
615 Trigger, TriggerAction, TriggerBuilder, TriggerCondition, TriggerEvent, TriggerLevel,
616 TriggerTiming,
617 };
618 pub use crate::types::{OrderBy, Select, SortOrder};
619 pub use crate::upsert::{ConflictAction, ConflictTarget, Upsert, UpsertBuilder};
620 pub use crate::window::{WindowFn, WindowFunction, WindowSpec};
621
622 pub use crate::tenant::{IsolationStrategy, TenantConfig, TenantContext, TenantMiddleware};
624
625 pub use crate::async_optimize::{
627 ConcurrencyConfig, ConcurrentExecutor, IntrospectionConfig, PipelineConfig, QueryPipeline,
628 };
629
630 pub use crate::mem_optimize::{GlobalInterner, InternedStr, LazySchema, QueryArena};
632
633 pub use crate::profiling::{
635 LeakDetector, MemoryProfiler, MemorySnapshot, enable_profiling, with_profiling,
636 };
637}