OmniSciDB  a987f07e93
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
EmbeddedDatabase::DBEngineImpl Class Reference
+ Inheritance diagram for EmbeddedDatabase::DBEngineImpl:
+ Collaboration diagram for EmbeddedDatabase::DBEngineImpl:

Public Member Functions

 DBEngineImpl ()
 
 ~DBEngineImpl ()
 
bool init (const std::string &cmd_line)
 
std::shared_ptr< CursorImplsql_execute_dbe (const TSessionId &session_id, const std::string &query_str, const bool column_format, const int32_t first_n, const int32_t at_most_n)
 
void executeDDL (const std::string &query)
 
void importArrowTable (const std::string &name, std::shared_ptr< arrow::Table > &table, uint64_t fragment_size)
 
std::shared_ptr< CursorImplexecuteDML (const std::string &query)
 
std::shared_ptr< CursorImplexecuteRA (const std::string &query)
 
std::vector< std::string > getTables ()
 
std::vector< ColumnDetailsgetTableDetails (const std::string &table_name)
 
bool setDatabase (std::string &db_name)
 
bool login (std::string &db_name, std::string &user_name, const std::string &password)
 
- Public Member Functions inherited from EmbeddedDatabase::DBEngine
virtual ~DBEngine ()
 
void executeDDL (const std::string &query)
 
std::shared_ptr< CursorexecuteDML (const std::string &query)
 
std::shared_ptr< CursorexecuteRA (const std::string &query)
 
void importArrowTable (const std::string &name, std::shared_ptr< arrow::Table > &table, uint64_t fragment_size=0)
 
std::vector< std::string > getTables ()
 
std::vector< ColumnDetailsgetTableDetails (const std::string &table_name)
 
bool setDatabase (std::string &db_name)
 
bool login (std::string &db_name, std::string &user_name, const std::string &password)
 

Protected Member Functions

void reset ()
 
bool catalogExists (const std::string &base_path)
 
void cleanCatalog (const std::string &base_path)
 
std::string createCatalog (const std::string &base_path)
 
- Protected Member Functions inherited from EmbeddedDatabase::DBEngine
 DBEngine ()
 
 DBEngine (const DBEngine &)=delete
 
DBEngineoperator= (const DBEngine &)=delete
 

Private Attributes

std::string base_path_
 
std::string session_id_
 
std::shared_ptr< DBHandlerdb_handler_
 
bool is_temp_db_
 
std::string udf_filename_
 
std::vector< std::string > system_folders_
 

Additional Inherited Members

- Static Public Member Functions inherited from EmbeddedDatabase::DBEngine
static std::shared_ptr< DBEnginecreate (const std::string &cmd_line)
 

Detailed Description

DBEngine internal implementation

Definition at line 100 of file DBEngine.cpp.

Constructor & Destructor Documentation

EmbeddedDatabase::DBEngineImpl::DBEngineImpl ( )
inline

Definition at line 102 of file DBEngine.cpp.

102 : is_temp_db_(false) {}
EmbeddedDatabase::DBEngineImpl::~DBEngineImpl ( )
inline

Definition at line 104 of file DBEngine.cpp.

References reset().

104 { reset(); }

+ Here is the call graph for this function:

Member Function Documentation

bool EmbeddedDatabase::DBEngineImpl::catalogExists ( const std::string &  base_path)
inlineprotected

Definition at line 370 of file DBEngine.cpp.

References system_folders_.

Referenced by init().

370  {
371  if (!boost::filesystem::exists(base_path)) {
372  return false;
373  }
374  for (auto& subdir : system_folders_) {
375  std::string path = base_path + "/" + subdir;
376  if (!boost::filesystem::exists(path)) {
377  return false;
378  }
379  }
380  return true;
381  }
std::vector< std::string > system_folders_
Definition: DBEngine.cpp:443

+ Here is the caller graph for this function:

void EmbeddedDatabase::DBEngineImpl::cleanCatalog ( const std::string &  base_path)
inlineprotected

Definition at line 383 of file DBEngine.cpp.

References system_folders_.

383  {
384  if (boost::filesystem::exists(base_path)) {
385  for (auto& subdir : system_folders_) {
386  std::string path = base_path + "/" + subdir;
387  if (boost::filesystem::exists(path)) {
388  boost::filesystem::remove_all(path);
389  }
390  }
391  }
392  }
std::vector< std::string > system_folders_
Definition: DBEngine.cpp:443
std::string EmbeddedDatabase::DBEngineImpl::createCatalog ( const std::string &  base_path)
inlineprotected

Definition at line 394 of file DBEngine.cpp.

References is_temp_db_, and system_folders_.

Referenced by init().

394  {
395  std::string root_dir = base_path;
396  if (base_path.empty()) {
397  boost::system::error_code error;
398  auto tmp_path = boost::filesystem::temp_directory_path(error);
399  if (boost::system::errc::success != error.value()) {
400  std::cerr << error.message() << std::endl;
401  return "";
402  }
403  tmp_path /= "omnidbe_%%%%-%%%%-%%%%";
404  auto uniq_path = boost::filesystem::unique_path(tmp_path, error);
405  if (boost::system::errc::success != error.value()) {
406  std::cerr << error.message() << std::endl;
407  return "";
408  }
409  root_dir = uniq_path.string();
410  is_temp_db_ = true;
411  }
412  if (!boost::filesystem::exists(root_dir)) {
413  if (!boost::filesystem::create_directory(root_dir)) {
414  std::cerr << "Cannot create database directory: " << root_dir << std::endl;
415  return "";
416  }
417  }
418  size_t absent_count = 0;
419  for (auto& sub_dir : system_folders_) {
420  std::string path = root_dir + "/" + sub_dir;
421  if (!boost::filesystem::exists(path)) {
422  if (!boost::filesystem::create_directory(path)) {
423  std::cerr << "Cannot create database subdirectory: " << path << std::endl;
424  return "";
425  }
426  ++absent_count;
427  }
428  }
429  if ((absent_count > 0) && (absent_count < system_folders_.size())) {
430  std::cerr << "Database directory structure is broken: " << root_dir << std::endl;
431  return "";
432  }
433  return root_dir;
434  }
std::vector< std::string > system_folders_
Definition: DBEngine.cpp:443

+ Here is the caller graph for this function:

void EmbeddedDatabase::DBEngineImpl::executeDDL ( const std::string &  query)
inline

Definition at line 225 of file DBEngine.cpp.

References run_benchmark_import::res, session_id_, and sql_execute_dbe().

Referenced by EmbeddedDatabase::DBEngine::executeDDL().

225  {
226  auto res = sql_execute_dbe(session_id_, query, false, -1, -1);
227  }
std::shared_ptr< CursorImpl > sql_execute_dbe(const TSessionId &session_id, const std::string &query_str, const bool column_format, const int32_t first_n, const int32_t at_most_n)
Definition: DBEngine.cpp:201

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::shared_ptr<CursorImpl> EmbeddedDatabase::DBEngineImpl::executeDML ( const std::string &  query)
inline

Definition at line 263 of file DBEngine.cpp.

References session_id_, and sql_execute_dbe().

Referenced by EmbeddedDatabase::DBEngine::executeDML().

263  {
264  return sql_execute_dbe(session_id_, query, false, -1, -1);
265  }
std::shared_ptr< CursorImpl > sql_execute_dbe(const TSessionId &session_id, const std::string &query_str, const bool column_format, const int32_t first_n, const int32_t at_most_n)
Definition: DBEngine.cpp:201

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::shared_ptr<CursorImpl> EmbeddedDatabase::DBEngineImpl::executeRA ( const std::string &  query)
inline

Definition at line 267 of file DBEngine.cpp.

References session_id_, and sql_execute_dbe().

Referenced by EmbeddedDatabase::DBEngine::executeRA().

267  {
268  return sql_execute_dbe(session_id_, query, false, -1, -1);
269  }
std::shared_ptr< CursorImpl > sql_execute_dbe(const TSessionId &session_id, const std::string &query_str, const bool column_format, const int32_t first_n, const int32_t at_most_n)
Definition: DBEngine.cpp:201

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::vector<ColumnDetails> EmbeddedDatabase::DBEngineImpl::getTableDetails ( const std::string &  table_name)
inline

Definition at line 289 of file DBEngine.cpp.

References EmbeddedDatabase::ColumnDetails::col_name, EmbeddedDatabase::ColumnDetails::col_type, EmbeddedDatabase::ColumnDetails::comp_param, db_handler_, EmbeddedDatabase::DICT, EmbeddedDatabase::ColumnDetails::encoding, EmbeddedDatabase::ColumnDetails::is_array, IS_GEO, kARRAY, EmbeddedDatabase::ColumnDetails::nullable, EmbeddedDatabase::ColumnDetails::precision, run_benchmark_import::result, EmbeddedDatabase::ColumnDetails::scale, session_id_, EmbeddedDatabase::sqlToColumnEncoding(), and EmbeddedDatabase::sqlToColumnType().

Referenced by EmbeddedDatabase::DBEngine::getTableDetails().

289  {
290  std::vector<ColumnDetails> result;
291  auto catalog = db_handler_->get_session_copy(session_id_).get_catalog_ptr();
292  if (catalog) {
293  auto metadata = catalog->getMetadataForTable(table_name, false);
294  if (metadata) {
295  const auto col_descriptors =
296  catalog->getAllColumnMetadataForTable(metadata->tableId, false, true, false);
297  const auto deleted_cd = catalog->getDeletedColumn(metadata);
298  for (const auto cd : col_descriptors) {
299  if (cd == deleted_cd) {
300  continue;
301  }
302  ColumnDetails col_details;
303  col_details.col_name = cd->columnName;
304  auto ct = cd->columnType;
305  SQLTypes sql_type = ct.get_type();
306  EncodingType sql_enc = ct.get_compression();
307  col_details.col_type = sqlToColumnType(sql_type);
308  col_details.encoding = sqlToColumnEncoding(sql_enc);
309  col_details.nullable = !ct.get_notnull();
310  col_details.is_array = (sql_type == kARRAY);
311  if (IS_GEO(sql_type)) {
312  col_details.precision = static_cast<int>(ct.get_subtype());
313  col_details.scale = ct.get_output_srid();
314  } else {
315  col_details.precision = ct.get_precision();
316  col_details.scale = ct.get_scale();
317  }
318  if (col_details.encoding == ColumnEncoding::DICT) {
319  // have to get the actual size of the encoding from the dictionary
320  // definition
321  const int dict_id = ct.get_comp_param();
322  auto dd = catalog->getMetadataForDict(dict_id, false);
323  if (dd) {
324  col_details.comp_param = dd->dictNBits;
325  } else {
326  throw std::runtime_error("Dictionary definition for column doesn't exist");
327  }
328  } else {
329  col_details.comp_param = ct.get_comp_param();
330  if (ct.is_date_in_days() && col_details.comp_param == 0) {
331  col_details.comp_param = 32;
332  }
333  }
334  result.push_back(col_details);
335  }
336  }
337  }
338  return result;
339  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439
SQLTypes
Definition: sqltypes.h:53
ColumnType sqlToColumnType(const SQLTypes &type)
Definition: DBETypes.cpp:111
EncodingType
Definition: sqltypes.h:228
tuple ColumnDetails
Definition: _parsers.py:23
ColumnEncoding sqlToColumnEncoding(const EncodingType &type)
Definition: DBETypes.cpp:162
#define IS_GEO(T)
Definition: sqltypes.h:298

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::vector<std::string> EmbeddedDatabase::DBEngineImpl::getTables ( )
inline

Definition at line 271 of file DBEngine.cpp.

References db_handler_, session_id_, and run_benchmark_import::tables.

Referenced by EmbeddedDatabase::DBEngine::getTables().

271  {
272  std::vector<std::string> table_names;
273  auto catalog = db_handler_->get_session_copy(session_id_).get_catalog_ptr();
274  if (catalog) {
275  const auto tables = catalog->getAllTableMetadata();
276  for (const auto td : tables) {
277  if (td->shard >= 0) {
278  // skip shards, they're not standalone tables
279  continue;
280  }
281  table_names.push_back(td->tableName);
282  }
283  } else {
284  throw std::runtime_error("System catalog uninitialized");
285  }
286  return table_names;
287  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439

+ Here is the caller graph for this function:

void EmbeddedDatabase::DBEngineImpl::importArrowTable ( const std::string &  name,
std::shared_ptr< arrow::Table > &  table,
uint64_t  fragment_size 
)
inline

Definition at line 229 of file DBEngine.cpp.

References Data_Namespace::CPU_LEVEL, Catalog_Namespace::SysCatalog::createDBObject(), db_handler_, DEFAULT_FRAGMENT_ROWS, DEFAULT_MAX_CHUNK_SIZE, DEFAULT_MAX_ROWS, DEFAULT_PAGE_SIZE, TableDescriptor::fragmenter, TableDescriptor::fragPageSize, TableDescriptor::fragType, Fragmenter_Namespace::INSERT_ORDER, Catalog_Namespace::SysCatalog::instance(), TableDescriptor::isView, TableDescriptor::keyMetainfo, TableDescriptor::maxChunkSize, TableDescriptor::maxFragRows, TableDescriptor::maxRows, setup::name, TableDescriptor::persistenceLevel, releaseArrowTable(), session_id_, setArrowTable(), TableDescriptor::storageType, TableDBObjectType, TableDescriptor::tableName, and TableDescriptor::userId.

Referenced by EmbeddedDatabase::DBEngine::importArrowTable().

231  {
232  setArrowTable(name, table);
233  try {
234  auto session = db_handler_->get_session_copy(session_id_);
235  TableDescriptor td;
236  td.tableName = name;
237  td.userId = session.get_currentUser().userId;
238  td.storageType = "ARROW:" + name;
240  td.isView = false;
241  td.fragmenter = nullptr;
243  td.maxFragRows = fragment_size > 0 ? fragment_size : DEFAULT_FRAGMENT_ROWS;
247  td.keyMetainfo = "[]";
248 
249  std::list<ColumnDescriptor> cols;
250  std::vector<Parser::SharedDictionaryDef> dictionaries;
251  auto catalog = session.get_catalog_ptr();
252  // nColumns
253  catalog->createTable(td, cols, dictionaries, false);
255  session.get_currentUser(), td.tableName, TableDBObjectType, *catalog);
256  } catch (...) {
258  throw;
259  }
261  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439
std::string tableName
std::string storageType
#define DEFAULT_MAX_CHUNK_SIZE
void setArrowTable(std::string name, std::shared_ptr< arrow::Table > table)
void createDBObject(const UserMetadata &user, const std::string &objectName, DBObjectType type, const Catalog_Namespace::Catalog &catalog, int32_t objectId=-1)
void releaseArrowTable(std::string name)
#define DEFAULT_MAX_ROWS
static SysCatalog & instance()
Definition: SysCatalog.h:341
std::string keyMetainfo
std::shared_ptr< Fragmenter_Namespace::AbstractFragmenter > fragmenter
#define DEFAULT_PAGE_SIZE
#define DEFAULT_FRAGMENT_ROWS
Fragmenter_Namespace::FragmenterType fragType
Data_Namespace::MemoryLevel persistenceLevel
string name
Definition: setup.in.py:72

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool EmbeddedDatabase::DBEngineImpl::init ( const std::string &  cmd_line)
inline

Definition at line 106 of file DBEngine.cpp.

References CommandLineOptions::allow_loop_joins, CommandLineOptions::allow_multifrag, CommandLineOptions::authMetadata, CommandLineOptions::base_path, base_path_, SystemParameters::calcite_keepalive, catalogExists(), createCatalog(), db_handler_, CommandLineOptions::db_leaves, CommandLineOptions::disk_cache_config, CommandLineOptions::enable_auto_clear_render_mem, CommandLineOptions::enable_legacy_syntax, CommandLineOptions::enable_rendering, logger::FATAL, g_enable_thrift_logs, g_serialize_temp_tables, CommandLineOptions::idle_session_duration, CommandLineOptions::init_logging(), CommandLineOptions::intel_jit_profile, CommandLineOptions::jit_debug, shared::kDefaultDbName, shared::kDefaultRootPasswd, shared::kRootUsername, LOG, CommandLineOptions::max_concurrent_render_sessions, CommandLineOptions::max_session_duration, CommandLineOptions::num_reader_threads, SystemParameters::omnisci_server_port, CommandLineOptions::parse_command_line(), CommandLineOptions::read_only, CommandLineOptions::render_compositor_use_last_gpu, CommandLineOptions::render_mem_bytes, CommandLineOptions::render_oom_retry_threshold, CommandLineOptions::renderer_prefer_igpu, CommandLineOptions::renderer_use_ppll_polys, CommandLineOptions::renderer_vulkan_timeout_ms, CommandLineOptions::reserved_gpu_mem, session_id_, CommandLineOptions::string_leaves, CommandLineOptions::system_parameters, CommandLineOptions::udf_compiler_options, CommandLineOptions::udf_compiler_path, and CommandLineOptions::udf_file_name.

106  {
107  static bool initialized{false};
108  if (initialized) {
109  throw std::runtime_error("Database engine already initialized");
110  }
111 
113 
114  // Split the command line into parameters
115  std::vector<std::string> parameters;
116  if (!cmd_line.empty()) {
117  parameters = boost::program_options::split_unix(cmd_line);
118  }
119 
120  // Generate command line to initialize CommandLineOptions for DBHandler
121  const char* log_option = "omnisci_dbe";
122  std::vector<const char*> cstrings;
123  cstrings.push_back(log_option);
124  for (auto& param : parameters) {
125  cstrings.push_back(param.c_str());
126  }
127  int argc = cstrings.size();
128  const char** argv = cstrings.data();
129 
130  CommandLineOptions prog_config_opts(log_option);
131  if (prog_config_opts.parse_command_line(argc, argv, false)) {
132  throw std::runtime_error("DBE paramerameters parsing failed");
133  }
134 
135  if (!g_enable_thrift_logs) {
136  apache::thrift::GlobalOutput.setOutputFunction([](const char* msg) {});
137  }
138 
139  auto base_path = prog_config_opts.base_path;
140 
141  // Check path to the database
142  bool is_new_db = base_path.empty() || !catalogExists(base_path);
143  if (is_new_db) {
144  base_path = createCatalog(base_path);
145  if (base_path.empty()) {
146  throw std::runtime_error("Database directory could not be created");
147  }
148  }
149  prog_config_opts.base_path = base_path;
150  prog_config_opts.init_logging();
151 
152  prog_config_opts.system_parameters.omnisci_server_port = -1;
153  prog_config_opts.system_parameters.calcite_keepalive = true;
154 
155  try {
156  db_handler_ =
157  std::make_shared<DBHandler>(prog_config_opts.db_leaves,
158  prog_config_opts.string_leaves,
159  prog_config_opts.base_path,
160  prog_config_opts.allow_multifrag,
161  prog_config_opts.jit_debug,
162  prog_config_opts.intel_jit_profile,
163  prog_config_opts.read_only,
164  prog_config_opts.allow_loop_joins,
165  prog_config_opts.enable_rendering,
166  prog_config_opts.renderer_use_ppll_polys,
167  prog_config_opts.renderer_prefer_igpu,
168  prog_config_opts.renderer_vulkan_timeout_ms,
169  prog_config_opts.enable_auto_clear_render_mem,
170  prog_config_opts.render_oom_retry_threshold,
171  prog_config_opts.render_mem_bytes,
172  prog_config_opts.max_concurrent_render_sessions,
173  prog_config_opts.reserved_gpu_mem,
174  prog_config_opts.render_compositor_use_last_gpu,
175  prog_config_opts.num_reader_threads,
176  prog_config_opts.authMetadata,
177  prog_config_opts.system_parameters,
178  prog_config_opts.enable_legacy_syntax,
179  prog_config_opts.idle_session_duration,
180  prog_config_opts.max_session_duration,
181  prog_config_opts.udf_file_name,
182  prog_config_opts.udf_compiler_path,
183  prog_config_opts.udf_compiler_options,
184 #ifdef ENABLE_GEOS
185  prog_config_opts.libgeos_so_filename,
186 #endif
187  prog_config_opts.disk_cache_config,
188  is_new_db);
189  } catch (const std::exception& e) {
190  LOG(FATAL) << "Failed to initialize database handler: " << e.what();
191  }
192  db_handler_->connect(session_id_,
196  base_path_ = base_path;
197  initialized = true;
198  return true;
199  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439
#define LOG(tag)
Definition: Logger.h:283
bool catalogExists(const std::string &base_path)
Definition: DBEngine.cpp:370
const std::string kDefaultDbName
std::string createCatalog(const std::string &base_path)
Definition: DBEngine.cpp:394
bool g_serialize_temp_tables
Definition: Catalog.cpp:106
const std::string kRootUsername
const std::string kDefaultRootPasswd
bool g_enable_thrift_logs
Definition: HeavyDB.cpp:289

+ Here is the call graph for this function:

bool EmbeddedDatabase::DBEngineImpl::login ( std::string &  db_name,
std::string &  user_name,
const std::string &  password 
)
inline

Definition at line 348 of file DBEngine.cpp.

References db_handler_, and session_id_.

Referenced by EmbeddedDatabase::DBEngine::login().

348  {
349  db_handler_->disconnect(session_id_);
350  db_handler_->connect(session_id_, user_name, password, db_name);
351  return true;
352  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439

+ Here is the caller graph for this function:

void EmbeddedDatabase::DBEngineImpl::reset ( )
inlineprotected

Definition at line 355 of file DBEngine.cpp.

References base_path_, db_handler_, Catalog_Namespace::SysCatalog::destroy(), is_temp_db_, session_id_, and logger::shutdown().

Referenced by ~DBEngineImpl().

355  {
356  if (db_handler_) {
357  db_handler_->disconnect(session_id_);
358  db_handler_->shutdown();
359  }
361  db_handler_.reset();
362 
364  if (is_temp_db_) {
365  boost::filesystem::remove_all(base_path_);
366  }
367  base_path_.clear();
368  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439
void shutdown()
Definition: Logger.cpp:397

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool EmbeddedDatabase::DBEngineImpl::setDatabase ( std::string &  db_name)
inline

Definition at line 341 of file DBEngine.cpp.

References db_handler_, Catalog_Namespace::SysCatalog::instance(), and session_id_.

Referenced by EmbeddedDatabase::DBEngine::setDatabase().

341  {
342  auto& sys_cat = Catalog_Namespace::SysCatalog::instance();
343  auto& user = db_handler_->get_session_copy(session_id_).get_currentUser();
344  sys_cat.switchDatabase(db_name, user.userName);
345  return true;
346  }
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439
static SysCatalog & instance()
Definition: SysCatalog.h:341

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::shared_ptr<CursorImpl> EmbeddedDatabase::DBEngineImpl::sql_execute_dbe ( const TSessionId &  session_id,
const std::string &  query_str,
const bool  column_format,
const int32_t  first_n,
const int32_t  at_most_n 
)
inline

Definition at line 201 of file DBEngine.cpp.

References CPU, db_handler_, and run_benchmark_import::result.

Referenced by executeDDL(), executeDML(), and executeRA().

205  {
206  ExecutionResult result{std::make_shared<ResultSet>(std::vector<TargetInfo>{},
209  nullptr,
210  nullptr,
211  0,
212  0),
213  {}};
215  db_handler_->sql_execute(
216  result, session_id, query_str, column_format, first_n, at_most_n, locks);
217  auto& targets = result.getTargetsMeta();
218  std::vector<std::string> col_names;
219  for (const auto target : targets) {
220  col_names.push_back(target.get_resname());
221  }
222  return std::make_shared<CursorImpl>(result.getRows(), col_names);
223  }
std::vector< std::unique_ptr< lockmgr::AbstractLockContainer< const TableDescriptor * >>> LockedTableDescriptors
Definition: LockMgr.h:271
std::shared_ptr< DBHandler > db_handler_
Definition: DBEngine.cpp:439

+ Here is the caller graph for this function:

Member Data Documentation

std::string EmbeddedDatabase::DBEngineImpl::base_path_
private

Definition at line 437 of file DBEngine.cpp.

Referenced by init(), and reset().

std::shared_ptr<DBHandler> EmbeddedDatabase::DBEngineImpl::db_handler_
private
bool EmbeddedDatabase::DBEngineImpl::is_temp_db_
private

Definition at line 440 of file DBEngine.cpp.

Referenced by createCatalog(), and reset().

std::string EmbeddedDatabase::DBEngineImpl::session_id_
private
std::vector<std::string> EmbeddedDatabase::DBEngineImpl::system_folders_
private
std::string EmbeddedDatabase::DBEngineImpl::udf_filename_
private

Definition at line 441 of file DBEngine.cpp.


The documentation for this class was generated from the following file: