OmniSciDB  2e3a973ef4
ExternalExecutor.cpp File Reference
+ Include dependency graph for ExternalExecutor.cpp:

Go to the source code of this file.

Classes

struct  anonymous_namespace{ExternalExecutor.cpp}::OmniSciVtab
 
struct  anonymous_namespace{ExternalExecutor.cpp}::OmniSciCursor
 
struct  anonymous_namespace{ExternalExecutor.cpp}::DecodedString
 

Namespaces

 anonymous_namespace{ExternalExecutor.cpp}
 

Functions

int anonymous_namespace{ExternalExecutor.cpp}::vt_destructor (sqlite3_vtab *pVtab)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_create (sqlite3 *db, void *p_aux, int argc, const char *const *argv, sqlite3_vtab **pp_vt, char **pzErr)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_connect (sqlite3 *db, void *p_aux, int argc, const char *const *argv, sqlite3_vtab **pp_vt, char **pzErr)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_disconnect (sqlite3_vtab *pVtab)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_destroy (sqlite3_vtab *pVtab)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_open (sqlite3_vtab *pVTab, sqlite3_vtab_cursor **pp_cursor)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_close (sqlite3_vtab_cursor *cur)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_eof (sqlite3_vtab_cursor *cur)
 
int64_t anonymous_namespace{ExternalExecutor.cpp}::get_num_rows (OmniSciCursor *p_cur)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_next (sqlite3_vtab_cursor *cur)
 
template<class T >
DecodedString anonymous_namespace{ExternalExecutor.cpp}::decode_string (const int8_t *column, const size_t cursor, StringDictionaryProxy *sdp)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_column (sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int col_idx)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_rowid (sqlite3_vtab_cursor *cur, sqlite_int64 *p_rowid)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_filter (sqlite3_vtab_cursor *p_vtc, int idxNum, const char *idxStr, int argc, sqlite3_value **argv)
 
int anonymous_namespace{ExternalExecutor.cpp}::vt_best_index (sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo)
 
std::vector< TargetMetaInfoanonymous_namespace{ExternalExecutor.cpp}::create_table_schema (const PlanState *plan_state)
 
int64_t * anonymous_namespace{ExternalExecutor.cpp}::get_scan_output_slot (int64_t *output_buffer, const size_t output_buffer_entry_count, const size_t pos, const size_t row_size_quad)
 
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)
 

Variables

sqlite3_module anonymous_namespace{ExternalExecutor.cpp}::omnisci_module
 

Function Documentation

◆ is_supported_type_for_extern_execution()

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_string() const
Definition: sqltypes.h:417
bool is_integer() const
Definition: sqltypes.h:419
bool is_fp() const
Definition: sqltypes.h:421
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ run_query_external()

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: