OmniSciDB  95562058bd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ExternalExecutor.h File Reference
#include <string>
#include <vector>
#include "QueryEngine/ColumnFetcher.h"
#include "QueryEngine/PlanState.h"
#include "QueryEngine/SerializeToSql.h"
#include "QueryEngine/TargetMetaInfo.h"
#include "ThirdParty/sqlite3/sqlite3.h"
+ Include dependency graph for ExternalExecutor.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ExternalQueryTable
 
struct  ExternalQueryOutputSpec
 
class  NativeExecutionError
 
class  SqliteMemDatabase
 

Functions

std::unique_ptr< ResultSetrun_query_external (const ExecutionUnitSql &sql, const FetchResult &fetch_result, const PlanState *plan_state, const ExternalQueryOutputSpec &output_spec)
 
bool is_supported_type_for_extern_execution (const SQLTypeInfo &ti)
 

Function Documentation

bool is_supported_type_for_extern_execution ( const SQLTypeInfo ti)

Definition at line 527 of file ExternalExecutor.cpp.

References SQLTypeInfo::is_fp(), SQLTypeInfo::is_integer(), and SQLTypeInfo::is_string().

Referenced by anonymous_namespace{ExternalExecutor.cpp}::create_table_schema(), and ScalarExprToSql::visitUOper().

527  {
528  return ti.is_integer() || ti.is_fp() || ti.is_string();
529 }
bool is_fp() const
Definition: sqltypes.h:421
bool is_integer() const
Definition: sqltypes.h:419
bool is_string() const
Definition: sqltypes.h:417

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::unique_ptr<ResultSet> run_query_external ( const ExecutionUnitSql sql,
const FetchResult fetch_result,
const PlanState plan_state,
const ExternalQueryOutputSpec output_spec 
)

Definition at line 512 of file ExternalExecutor.cpp.

References anonymous_namespace{ExternalExecutor.cpp}::create_table_schema(), ExternalQueryOutputSpec::executor, ExecutionUnitSql::from_table, ExecutionUnitSql::query, SqliteMemDatabase::run(), and SqliteMemDatabase::runSelect().

Referenced by ExecutionKernel::runImpl().

516  {
517  ExternalQueryTable external_query_table{fetch_result,
518  create_table_schema(plan_state),
519  sql.from_table,
520  output_spec.executor};
521  SqliteMemDatabase db(external_query_table);
522  const auto create_table = "create virtual table " + sql.from_table + " using omnisci";
523  db.run(create_table);
524  return db.runSelect(sql.query, output_spec);
525 }
const Executor * executor
std::vector< TargetMetaInfo > create_table_schema(const PlanState *plan_state)
std::string from_table
std::string query

+ Here is the call graph for this function:

+ Here is the caller graph for this function: