NebulaStream  0.6.213
NebulaStream is a data and application management framework for the internet of things
NES::QueryCompilation Namespace Reference

Namespaces

 Phases
 
 PhysicalOperators
 

Classes

class  SampleCPPCodeGenerator
 
class  QueryCompilationException
 Exception thrown by the query compiler. More...
 
class  QueryCompilationRequest
 Represents a query compilation request. The request encapsulates the decomposed query plan and addition properties. More...
 
class  QueryCompilationResult
 Provides the query compilation results. Query compilation can succeed, in this case the result contains a ExecutableQueryPlan pointer. If query compilation fails, the result contains the error and hasError() return true. More...
 
class  QueryCompiler
 General interface for the query compiler interface. Subclasses can provide their own implementation on how to to process a query compilation request. More...
 

Typedefs

using QueryCompilerPtr = std::shared_ptr< QueryCompiler >
 
using PipelineContextPtr = std::shared_ptr< PipelineContext >
 
using CodeGeneratorPtr = std::shared_ptr< CodeGenerator >
 
using QueryCompilationErrorPtr = std::shared_ptr< QueryCompilationError >
 
using QueryCompilationRequestPtr = std::shared_ptr< QueryCompilationRequest >
 
using QueryCompilationResultPtr = std::shared_ptr< QueryCompilationResult >
 
using QueryCompilerOptionsPtr = std::shared_ptr< QueryCompilerOptions >
 
using OperatorPipelinePtr = std::shared_ptr< OperatorPipeline >
 
using LowerLogicalToPhysicalOperatorsPtr = std::shared_ptr< LowerLogicalToPhysicalOperators >
 
using PhysicalOperatorProviderPtr = std::shared_ptr< PhysicalOperatorProvider >
 
using GeneratableOperatorProviderPtr = std::shared_ptr< GeneratableOperatorProvider >
 
using LowerPhysicalToGeneratableOperatorsPtr = std::shared_ptr< LowerPhysicalToGeneratableOperators >
 
using LowerToExecutableQueryPlanPhasePtr = std::shared_ptr< LowerToExecutableQueryPlanPhase >
 
using PipelineQueryPlanPtr = std::shared_ptr< PipelineQueryPlan >
 
using AddScanAndEmitPhasePtr = std::shared_ptr< AddScanAndEmitPhase >
 
using BufferOptimizationPhasePtr = std::shared_ptr< BufferOptimizationPhase >
 
using PredicationOptimizationPhasePtr = std::shared_ptr< PredicationOptimizationPhase >
 
using PipeliningPhasePtr = std::shared_ptr< PipeliningPhase >
 
using OperatorFusionPolicyPtr = std::shared_ptr< OperatorFusionPolicy >
 
using DataSinkProviderPtr = std::shared_ptr< DataSinkProvider >
 
using DataSourceProviderPtr = std::shared_ptr< DefaultDataSourceProvider >
 

Enumerations

enum class  OutputBufferAssignmentStrategy : uint8_t { FIELD_COPY , RECORD_COPY }
 
enum class  OutputBufferAllocationStrategy : uint8_t {
  ONLY_INPLACE_OPERATIONS , REUSE_INPUT_BUFFER_AND_OMIT_OVERFLOW_CHECK , REUSE_INPUT_BUFFER , OMIT_OVERFLOW_CHECK ,
  NO_OPTIMIZATION
}
 
enum class  StreamJoinStrategy : uint8_t {
  HASH_JOIN_LOCAL , HASH_JOIN_VAR_SIZED , HASH_JOIN_GLOBAL_LOCKING , HASH_JOIN_GLOBAL_LOCK_FREE ,
  NESTED_LOOP_JOIN
}
 
enum class  JoinBuildSideType : uint8_t { Right , Left }
 

Functions

template<typename E = JoinBuildSideType, typename Out = uint64_t>
constexpr Out to_underlying (E e) noexcept
 

Typedef Documentation

◆ AddScanAndEmitPhasePtr

using NES::QueryCompilation::AddScanAndEmitPhasePtr = typedef std::shared_ptr<AddScanAndEmitPhase>

◆ BufferOptimizationPhasePtr

using NES::QueryCompilation::BufferOptimizationPhasePtr = typedef std::shared_ptr<BufferOptimizationPhase>

◆ CodeGeneratorPtr

using NES::QueryCompilation::CodeGeneratorPtr = typedef std::shared_ptr<CodeGenerator>

◆ DataSinkProviderPtr

using NES::QueryCompilation::DataSinkProviderPtr = typedef std::shared_ptr<DataSinkProvider>

◆ DataSourceProviderPtr

using NES::QueryCompilation::DataSourceProviderPtr = typedef std::shared_ptr<DefaultDataSourceProvider>

◆ GeneratableOperatorProviderPtr

using NES::QueryCompilation::GeneratableOperatorProviderPtr = typedef std::shared_ptr<GeneratableOperatorProvider>

◆ LowerLogicalToPhysicalOperatorsPtr

using NES::QueryCompilation::LowerLogicalToPhysicalOperatorsPtr = typedef std::shared_ptr<LowerLogicalToPhysicalOperators>

◆ LowerPhysicalToGeneratableOperatorsPtr

using NES::QueryCompilation::LowerPhysicalToGeneratableOperatorsPtr = typedef std::shared_ptr<LowerPhysicalToGeneratableOperators>

◆ LowerToExecutableQueryPlanPhasePtr

using NES::QueryCompilation::LowerToExecutableQueryPlanPhasePtr = typedef std::shared_ptr<LowerToExecutableQueryPlanPhase>

◆ OperatorFusionPolicyPtr

using NES::QueryCompilation::OperatorFusionPolicyPtr = typedef std::shared_ptr<OperatorFusionPolicy>

◆ OperatorPipelinePtr

using NES::QueryCompilation::OperatorPipelinePtr = typedef std::shared_ptr<OperatorPipeline>

◆ PhysicalOperatorProviderPtr

using NES::QueryCompilation::PhysicalOperatorProviderPtr = typedef std::shared_ptr<PhysicalOperatorProvider>

◆ PipelineContextPtr

using NES::QueryCompilation::PipelineContextPtr = typedef std::shared_ptr<PipelineContext>

◆ PipelineQueryPlanPtr

using NES::QueryCompilation::PipelineQueryPlanPtr = typedef std::shared_ptr<PipelineQueryPlan>

◆ PipeliningPhasePtr

using NES::QueryCompilation::PipeliningPhasePtr = typedef std::shared_ptr<PipeliningPhase>

◆ PredicationOptimizationPhasePtr

using NES::QueryCompilation::PredicationOptimizationPhasePtr = typedef std::shared_ptr<PredicationOptimizationPhase>

◆ QueryCompilationErrorPtr

using NES::QueryCompilation::QueryCompilationErrorPtr = typedef std::shared_ptr<QueryCompilationError>

◆ QueryCompilationRequestPtr

◆ QueryCompilationResultPtr

◆ QueryCompilerOptionsPtr

typedef std::shared_ptr< QueryCompilerOptions > NES::QueryCompilation::QueryCompilerOptionsPtr

◆ QueryCompilerPtr

Enumeration Type Documentation

◆ JoinBuildSideType

Enumerator
Right 
Left 

◆ OutputBufferAllocationStrategy

Enumerator
ONLY_INPLACE_OPERATIONS 

If all records and all fields match up in input and result buffer we can simply emit the input buffer. For this no filter can be applied and no new fields can be added. The only typical operations possible are inplace-maps, e.g. "id = id + 1".

REUSE_INPUT_BUFFER_AND_OMIT_OVERFLOW_CHECK 

Output schema is smaller or equal (bytes) than input schema. We can reuse the buffer and omit size checks.

REUSE_INPUT_BUFFER 

enable the two optimizations individually (benchmarking only)

OMIT_OVERFLOW_CHECK 
NO_OPTIMIZATION 

create separate result buffer and copy everything over after all operations are applied. Check size after every written tuple.

◆ OutputBufferAssignmentStrategy

Enumerator
FIELD_COPY 
RECORD_COPY 

◆ StreamJoinStrategy

Enumerator
HASH_JOIN_LOCAL 
HASH_JOIN_VAR_SIZED 
HASH_JOIN_GLOBAL_LOCKING 
HASH_JOIN_GLOBAL_LOCK_FREE 
NESTED_LOOP_JOIN 

Function Documentation

◆ to_underlying()

template<typename E = JoinBuildSideType, typename Out = uint64_t>
constexpr Out NES::QueryCompilation::to_underlying ( e)
constexprnoexcept