MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / bindFunc

Function bindFunc

src/function/table/show_sequences.cpp:60–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60static std::unique_ptr<TableFuncBindData> bindFunc(const main::ClientContext* context,
61 const TableFuncBindInput* input) {
62 std::vector<std::string> columnNames;
63 std::vector<LogicalType> columnTypes;
64 columnNames.emplace_back("name");
65 columnTypes.emplace_back(LogicalType::STRING());
66 columnNames.emplace_back("database name");
67 columnTypes.emplace_back(LogicalType::STRING());
68 columnNames.emplace_back("start value");
69 columnTypes.emplace_back(LogicalType::INT64());
70 columnNames.emplace_back("increment");
71 columnTypes.emplace_back(LogicalType::INT64());
72 columnNames.emplace_back("min value");
73 columnTypes.emplace_back(LogicalType::INT64());
74 columnNames.emplace_back("max value");
75 columnTypes.emplace_back(LogicalType::INT64());
76 columnNames.emplace_back("cycle");
77 columnTypes.emplace_back(LogicalType::BOOL());
78 std::vector<SequenceInfo> sequenceInfos;
79 for (const auto& entry :
80 Catalog::Get(*context)->getSequenceEntries(transaction::Transaction::Get(*context))) {
81 const auto sequenceData = entry->getSequenceData();
82 auto sequenceInfo = SequenceInfo{entry->getName(), LOCAL_DB_NAME, sequenceData.startValue,
83 sequenceData.increment, sequenceData.minValue, sequenceData.maxValue,
84 sequenceData.cycle};
85 sequenceInfos.push_back(std::move(sequenceInfo));
86 }
87
88 // TODO: uncomment this when we can test it
89 // for (auto attachedDatabase : databaseManager->getAttachedDatabases()) {
90 // auto databaseName = attachedDatabase->getDBName();
91 // auto databaseType = attachedDatabase->getDBType();
92 // for (auto& entry : attachedDatabase->getCatalog()->getSequenceEntries(context->getTx()))
93 // {
94 // auto sequenceData = entry->getSequenceData();
95 // auto sequenceInfo =
96 // SequenceInfo{entry->getName(), std::format("{}({})", databaseName,
97 // databaseType),
98 // sequenceData.startValue, sequenceData.increment, sequenceData.minValue,
99 // sequenceData.maxValue, sequenceData.cycle};
100 // sequenceInfos.push_back(std::move(sequenceInfo));
101 // }
102 // }
103 columnNames = TableFunction::extractYieldVariables(columnNames, input->yieldVariables);
104 auto columns = input->binder->createVariables(columnNames, columnTypes);
105 return std::make_unique<ShowSequencesBindData>(std::move(sequenceInfos), columns,
106 sequenceInfos.size());
107}
108
109function_set ShowSequencesFunction::getFunctionSet() {
110 function_set functionSet;

Callers

nothing calls this directly

Calls 7

emplace_backMethod · 0.80
getSequenceEntriesMethod · 0.80
getSequenceDataMethod · 0.80
createVariablesMethod · 0.80
getNameMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected