neosqlite.collection.temporary_table_aggregation.core module¶
- neosqlite.collection.temporary_table_aggregation.core.can_process_with_temporary_tables(pipeline: list[dict[str, Any]]) bool[source]¶
Determine if a pipeline can be processed with temporary tables.
This function checks if all stages in an aggregation pipeline are supported by the temporary table processing approach. It verifies that each stage in the pipeline is one of the supported stage types.
Additionally, it handles special cases for text search operations: - Pure text search operations are supported with hybrid processing - Text search with simple unwind operations are supported (uses Python text search on temp tables) - Complex nested unwinds (multiple unwinds or dotted paths) fall back to Python
- Parameters:
pipeline (list[dict[str, Any]]) – List of aggregation pipeline stages to check
- Returns:
- True if all stages in the pipeline are supported and can be processed
with temporary tables, False otherwise
- Return type:
bool
- neosqlite.collection.temporary_table_aggregation.core.execute_2nd_tier_aggregation(query_engine, pipeline: list[dict[str, Any]], batch_size: int = 101) list[dict[str, Any]][source]¶
Execute aggregation pipeline using temporary table approach for complex pipelines.
This function is designed to be called as the second tier in a three-tier processing system: 1. First tier (QueryEngine): Try existing SQL optimization for simple pipelines 2. Second tier (this function): Try temporary table approach for complex pipelines 3. Third tier (QueryEngine): Fall back to Python implementation for unsupported operations
This function focuses specifically on processing complex pipelines that the current NeoSQLite SQL optimization cannot handle efficiently, using temporary tables for better performance.
- Parameters:
query_engine – The NeoSQLite QueryEngine instance to use for processing
pipeline (list[dict[str, Any]]) – List of aggregation pipeline stages to process
batch_size (int) – Batch size for fetching results from temporary tables
- Returns:
List of result documents after processing the pipeline
- Return type:
list[dict[str, Any]]