Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::DefaultTableFunctionGenerator Class Reference
Inheritance diagram for duckdb::DefaultTableFunctionGenerator:
Collaboration diagram for duckdb::DefaultTableFunctionGenerator:

Public Member Functions

 DefaultTableFunctionGenerator (Catalog &catalog, SchemaCatalogEntry &schema)
 
unique_ptr< CatalogEntryCreateDefaultEntry (ClientContext &context, const string &entry_name) override
 Creates a default entry with the specified name, or returns nullptr if no such entry can be generated.
 
vector< string > GetDefaultEntries () override
 Get a list of all default entries in the generator.
 
- Public Member Functions inherited from duckdb::DefaultGenerator
 DefaultGenerator (Catalog &catalog)
 
virtual unique_ptr< CatalogEntryCreateDefaultEntry (CatalogTransaction transaction, const string &entry_name)
 
virtual bool LockDuringCreate () const
 

Static Public Member Functions

static unique_ptr< CreateMacroInfoCreateTableMacroInfo (const DefaultTableMacro &default_macro)
 

Public Attributes

SchemaCatalogEntryschema
 
- Public Attributes inherited from duckdb::DefaultGenerator
Catalogcatalog
 
atomic< bool > created_all_entries
 

Static Private Member Functions

static unique_ptr< CreateMacroInfoCreateInternalTableMacroInfo (const DefaultTableMacro &default_macro, unique_ptr< MacroFunction > function)
 

Constructor & Destructor Documentation

◆ DefaultTableFunctionGenerator()

duckdb::DefaultTableFunctionGenerator::DefaultTableFunctionGenerator ( Catalog catalog,
SchemaCatalogEntry schema 
)
24468 : DefaultGenerator(catalog), schema(schema) {
24469}

Member Function Documentation

◆ CreateDefaultEntry()

unique_ptr< CatalogEntry > duckdb::DefaultTableFunctionGenerator::CreateDefaultEntry ( ClientContext context,
const string &  entry_name 
)
overridevirtual

Creates a default entry with the specified name, or returns nullptr if no such entry can be generated.

Reimplemented from duckdb::DefaultGenerator.

24522 {
24523 auto info = GetDefaultTableFunction(schema.name, entry_name);
24524 if (info) {
24525 return make_uniq_base<CatalogEntry, TableMacroCatalogEntry>(catalog, schema, info->Cast<CreateMacroInfo>());
24526 }
24527 return nullptr;
24528}
string name
The name of the entry.
Definition duckdb.hpp:6311

◆ GetDefaultEntries()

vector< string > duckdb::DefaultTableFunctionGenerator::GetDefaultEntries ( )
overridevirtual

Get a list of all default entries in the generator.

Implements duckdb::DefaultGenerator.

24530 {
24531 vector<string> result;
24532 for (idx_t index = 0; internal_table_macros[index].name != nullptr; index++) {
24533 if (StringUtil::Lower(internal_table_macros[index].name) != internal_table_macros[index].name) {
24534 throw InternalException("Default macro name %s should be lowercase", internal_table_macros[index].name);
24535 }
24536 if (internal_table_macros[index].schema == schema.name) {
24537 result.emplace_back(internal_table_macros[index].name);
24538 }
24539 }
24540 return result;
24541}
static DUCKDB_API string Lower(const string &str)
Convert a string to lowercase.
index
Here is the call graph for this function:

◆ CreateTableMacroInfo()

unique_ptr< CreateMacroInfo > duckdb::DefaultTableFunctionGenerator::CreateTableMacroInfo ( const DefaultTableMacro default_macro)
static
24498 {
24499 Parser parser;
24500 parser.ParseQuery(default_macro.macro);
24501 if (parser.statements.size() != 1 || parser.statements[0]->type != StatementType::SELECT_STATEMENT) {
24502 throw InternalException("Expected a single select statement in CreateTableMacroInfo internal");
24503 }
24504 auto node = std::move(parser.statements[0]->Cast<SelectStatement>().node);
24505
24506 auto result = make_uniq<TableMacroFunction>(std::move(node));
24507 return CreateInternalTableMacroInfo(default_macro, std::move(result));
24508}

◆ CreateInternalTableMacroInfo()

unique_ptr< CreateMacroInfo > duckdb::DefaultTableFunctionGenerator::CreateInternalTableMacroInfo ( const DefaultTableMacro default_macro,
unique_ptr< MacroFunction function 
)
staticprivate
24473 {
24474 for (idx_t param_idx = 0; default_macro.parameters[param_idx] != nullptr; param_idx++) {
24475 function->parameters.push_back(make_uniq<ColumnRefExpression>(default_macro.parameters[param_idx]));
24476 }
24477 for (idx_t named_idx = 0; default_macro.named_parameters[named_idx].name != nullptr; named_idx++) {
24478 const auto &named_param = default_macro.named_parameters[named_idx];
24479 auto expr_list = Parser::ParseExpressionList(named_param.default_value);
24480 if (expr_list.size() != 1) {
24481 throw InternalException("Expected a single expression");
24482 }
24483 function->parameters.push_back(make_uniq<ColumnRefExpression>(named_param.name));
24484 function->default_parameters.insert(make_pair(named_param.name, std::move(expr_list[0])));
24485 }
24486
24487 auto type = CatalogType::TABLE_MACRO_ENTRY;
24488 auto bind_info = make_uniq<CreateMacroInfo>(type);
24489 bind_info->schema = default_macro.schema;
24490 bind_info->name = default_macro.name;
24491 bind_info->temporary = true;
24492 bind_info->internal = true;
24493 bind_info->macros.push_back(std::move(function));
24494 return bind_info;
24495}
static DUCKDB_API vector< unique_ptr< ParsedExpression > > ParseExpressionList(const string &select_list, ParserOptions options=ParserOptions())
Parses a list of expressions (i.e. the list found in a SELECT clause)

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